Kontrollkästchen
Hallo
ich habe folgendes Problem mit einem Kontrollkästchen:
Wenn ein Haken im Kontrollkästchen gesetzt wird soll ein bestimmter Wert in einer definierten Zelle erscheinen. Ist kein Haken soll dem entsprechend kein Wert in die Zelle erscheinen.
Habe auch schon ein Makro geschrieben, was auch funktioniert und einen Wert in eine Zelle schreibt. Allerdings muss ich immer das komplette Makro ausführen.
Meine Frage, ist es möglich das der Wert in der Zelle erscheint wenn man den Haken setzt, ohne das Makro auszuführen?
Gruß Rudi
Antwort schreiben
Antwort 1 von coros vom 12.10.2019, 10:25 Options
Hallo Rudi,
welches Kontrollkästchen? Das aus der Symbolleiste "Steuerelement-Toolbox" oder das aus der Symbolleiste "Formular"?
MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du
ein Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.
Antwort 2 von Rudi81 vom 12.10.2019, 10:32 Options
Hallo Oliver,
ich habe ein Kontrollkästchen aus der Steuerelement- Toolbox verwendet.
Gruß Rudi
Antwort 3 von coros vom 12.10.2019, 10:36 Options
Hallo Rudi,
dann muss immer ein VBA-Code nach dem Muster
[b]Option Explicit
Private Sub CheckBox1_Click()
If CheckBox1 = True Then
Range("A1") = "Wert 1"
Else
Range("A1").ClearContents
End If
End Sub[/b]
(Code gehört in das VBA-Projekt des Tabellenblattes, in dem sich das Kontrollkästchen befindet) entsprechend dem Zustand des Kästchens ausgeführt werden.
MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.
Antwort 4 von Rudi81 vom 12.10.2019, 11:08 Options
Hey Oliver,
so richtig will es noch nicht. Ich habe mal meinen Code für die erste CheckBox.
Sub checkBox1_click()
Const A As String = "F3"
Dim B As MSForms.CheckBox
Set B = ActiveSheet.CheckBox1
With B
.BackColor = RGB(153, 204, 0)
.Left = Range(A).Left
.Top = Range(A).Top
.Width = Range(A).Width
.Height = Range(A).Height
.Caption = "Test"
End With
If B = True Then
Range("g3") = ActiveSheet.Range("D3").Value
Else
Range("g3") = 0
End If
End Sub
Bin im Programmiren von VBA´s ein Anfänger.
Macht es einen Unterschied ob ich den Code in einem Modul schreibe oder direkt in dem Objekt der Tabellenblätter?
Gruß Rudi
Antwort 5 von coros vom 12.10.2019, 11:18 Options
Hallo Rudi,
nein, das ist eigentlich egal. Nur Darf ein Makro nicht den gleichen Namen wie ein Ereignis, z.B. checkBox1_Click, wie es bei Dir der Fall ist.
Nachfolgend die VBA-Code, wie sie funktionieren. Kopiere das Makro "checkBox1Click" in ein StandardModul.
[b]Sub checkBox1Click()
Const A As String = "F3"
Dim B As MSForms.CheckBox
Set B = ActiveSheet.checkBox1
With B
.BackColor = RGB(153, 204, 0)
.Left = Range(A).Left
.Top = Range(A).Top
.Width = Range(A).Width
.Height = Range(A).Height
.Caption = "Test"
End With
If B = True Then
Range("g3") = ActiveSheet.Range("D3").Value
Else
Range("g3") = 0
End If
End Sub[/b]
Nachfolgenden Code kopiere in das VBA-Projekt des Tabellenblattes, in dem sich Dein Kontrollkästchen befindet.
[b]Option Explicit
Private Sub checkBox1_click()
checkBox1Click
End Sub[/b]
Dann sollte alles funktionieren.
Solltest Du nicht wissen, wie Du den Code in Deine Datei bekommst, dann schau mal auf
meiner HP in der
Rubrik Anleitungen und dort dann in der
Anleitungsnummer 2 nach. Dort stelle ich dazu eine bebilderte Anleitung zur Verfügung, die Dir sicherlich helfen wird.
Bei Fragen melde Dich.
MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.
Antwort 6 von Rudi81 vom 12.10.2019, 12:01 Options
Hallo Oliver,
alle Fehler gefunden und beseitigt.
Deine Beschreibung hat mir super geholfen.
Vielen Dank
Gruß Rudi
Antwort 7 von coros vom 12.10.2019, 12:06 Options
Hallo Rudi,
gern geschehn.
MfG,
Oliver
Jeder macht was er will, keiner macht was er soll, aber alle machen mit.