Frage wie kann ich einer checkbox sagen das sie solange false ist bis ich sie anklicke?
(False = 0 (soll eine 0 in der spalte/zeile stehen)
(true = 1 (soll eine 1 drinnen stehen) (Aber nur wenn ich sie bewusst anklicke.)
ist das möglich?
lg
Private Sub CheckBox1_Click()
Range("A1") = Not CheckBox1 - 1
End Sub
Private Sub CommandButton1_Click()
Dim lZeile As Long
lZeile = 2
Do While Trim(CStr(Tabelle1.Cells(lZeile, 1).Value)) ""
lZeile = lZeile + 1
Loop
Tabelle1.Cells(lZeile, 1) = CStr(lZeile)
ListBox1.AddItem CStr(lZeile)
ListBox1.ListIndex = ListBox1.ListCount - 1
End Sub
Private Sub CommandButton2_Click()
Dim lZeile As Long
If ListBox1.ListIndex = -1 Then Exit Sub
lZeile = 2
Do While Trim(CStr(Tabelle1.Cells(lZeile, 1).Value)) ""
If ListBox1.Text = Trim(CStr(Tabelle1.Cells(lZeile, 1).Value)) Then
Tabelle1.Rows(CStr(lZeile & ":" & lZeile)).Delete
Call UserForm_Initialize
If ListBox1.ListCount > 0 Then ListBox1.ListIndex = 0
Exit Do
End If
lZeile = lZeile + 1
Loop
End Sub
Private Sub CommandButton3_Click()
Dim lZeile As Long
If ListBox1.ListIndex = -1 Then Exit Sub
If Trim(CStr(TextBox1.Text)) = "" Then
MsgBox "Sie müssen mindestens einen Namen eingeben!", vbCritical + vbOKOnly, "FEHLER!"
Exit Sub
End If
lZeile = 2
Do While Trim(CStr(Tabelle1.Cells(lZeile, 1).Value)) ""
If ListBox1.Text = Trim(CStr(Tabelle1.Cells(lZeile, 1).Value)) Then
Tabelle1.Cells(lZeile, 1).Value = Trim(CStr(TextBox1.Text))
Tabelle1.Cells(lZeile, 2).Value = TextBox2.Text
Tabelle1.Cells(lZeile, 3).Value = TextBox3.Text
Tabelle1.Cells(lZeile, 4).Value = TextBox4.Text
Tabelle1.Cells(lZeile, 5).Value = TextBox5.Text
Tabelle1.Cells(lZeile, 6).Value = TextBox6.Text
Tabelle1.Cells(lZeile, 7).Value = TextBox7.Text
Tabelle1.Cells(lZeile, 8).Value = TextBox8.Text
Tabelle1.Cells(lZeile, 9).Value = TextBox9.Text
Tabelle1.Cells(lZeile, 10).Value = TextBox10.Text
Tabelle1.Cells(lZeile, 11).Value = TextBox11.Text
If CheckBox1 Then
Tabelle1.Cells(lZeile, 12) = "1"
Else
Tabelle1.Cells(lZeile, 12) = ""
End If
If ListBox1.Text Trim(CStr(TextBox1.Text)) Then
Call UserForm_Initialize
If ListBox1.ListCount > 0 Then ListBox1.ListIndex = 0
End If
Exit Do
End If
lZeile = lZeile + 1
Loop
End Sub
Private Sub CommandButton4_Click()
Unload Me
End Sub
Private Sub ListBox1_Click()
Dim lZeile As Long
TextBox1 = ""
TextBox2 = ""
TextBox3 = ""
TextBox4 = ""
TextBox5 = ""
TextBox6 = ""
TextBox7 = ""
TextBox8 = ""
TextBox9 = ""
TextBox10 = ""
TextBox11 = ""
CheckBox1 = False
If ListBox1.ListIndex >= 0 Then
lZeile = 2
Do While Trim(CStr(Tabelle1.Cells(lZeile, 1).Value)) ""
If ListBox1.Text = Trim(CStr(Tabelle1.Cells(lZeile, 1).Value)) Then
TextBox1 = Trim(CStr(Tabelle1.Cells(lZeile, 1).Value))
TextBox2 = Tabelle1.Cells(lZeile, 2).Value
TextBox3 = Tabelle1.Cells(lZeile, 3).Value
TextBox4 = Tabelle1.Cells(lZeile, 4).Value
TextBox5 = Tabelle1.Cells(lZeile, 5).Value
TextBox6 = Tabelle1.Cells(lZeile, 6).Value
TextBox7 = Tabelle1.Cells(lZeile, 7).Value
TextBox8 = Tabelle1.Cells(lZeile, 8).Value
TextBox9 = Tabelle1.Cells(lZeile, 9).Value
TextBox10 = Tabelle1.Cells(lZeile, 10).Value
TextBox11 = Tabelle1.Cells(lZeile, 11).Value
CheckBox1 = Tabelle1.Cells(lZeile, 12).Value
Exit Do
End If
lZeile = lZeile + 1
Loop
End If
End Sub
Private Sub UserForm_Activate()
If ListBox1.ListCount > 0 Then ListBox1.ListIndex = 0
End Sub
Private Sub UserForm_Initialize()
Dim lZeile As Long
TextBox1 = ""
TextBox2 = ""
TextBox3 = ""
TextBox4 = ""
TextBox5 = ""
TextBox6 = ""
TextBox7 = ""
TextBox8 = ""
TextBox9 = ""
TextBox10 = ""
TextBox11 = ""
CheckBox1 = False
ListBox1.Clear
lZeile = 2
Do While Trim(CStr(Tabelle1.Cells(lZeile, 1).Value)) ""
ListBox1.AddItem Trim(CStr(Tabelle1.Cells(lZeile, 1).Value))
lZeile = lZeile + 1
Loop
End Sub
CheckBox1 = Tabelle1.Cells(lZeile, 12).Value
naja so wie du das geschrieben hast funkt das ned ganz ...
If CheckBox1 Then
Tabelle1.Cells(lZeile, 12) = "1"
Else
Tabelle1.Cells(lZeile, 12) = ""
End If
nur weis ich eben nicht wie ich ihm sage er soll default mässig auf "" (emty) sein er hinterlegt mir irgendwie die checkbox im modul so komisch ... und es funktioniert nur dann wenn ich die checkbox anklicke dann ist es ihm egal ob sie true or false ist dann funktioniert sie aber das problem ist eben das ich sie erst einmal anklicken muss also mich entscheiden muss damit sie funktioniert .. das ist wenn ich so an die 100 dann habe etwas mühsam soll so funktionieren das Default mässig alle auf "" stehen und wenn z.b. eine true ist dann soll "1" stehen.
If CheckBox1 Then
Tabelle1.Cells(lZeile, 12) = "1"
Else
Tabelle1.Cells(lZeile, 12) = ""
End If
CheckBox1 = False
Tabelle1.Cells(lZeile, 12) = ""
Private Sub CheckBox1_Click()
End Sub
Private Sub CommandButton1_Click()
Dim lZeile As Long
lZeile = 2
Do While Trim(CStr(Tabelle1.Cells(lZeile, 1).Value)) ""
lZeile = lZeile + 1
Loop
Tabelle1.Cells(lZeile, 1) = CStr(lZeile)
ListBox1.AddItem CStr(lZeile)
ListBox1.ListIndex = ListBox1.ListCount - 1
CheckBox1.Value = False
End Sub
Private Sub CommandButton2_Click()
Dim lZeile As Long
If ListBox1.ListIndex = -1 Then Exit Sub
lZeile = 2
Do While Trim(CStr(Tabelle1.Cells(lZeile, 1).Value)) ""
If ListBox1.Text = Trim(CStr(Tabelle1.Cells(lZeile, 1).Value)) Then
Tabelle1.Rows(CStr(lZeile & ":" & lZeile)).Delete
Call UserForm_Initialize
If ListBox1.ListCount > 0 Then ListBox1.ListIndex = 0
Exit Do
End If
lZeile = lZeile + 1
Loop
End Sub
Private Sub CommandButton3_Click()
Dim lZeile As Long
If ListBox1.ListIndex = -1 Then Exit Sub
If Trim(CStr(TextBox1.Text)) = "" Then
MsgBox "Sie müssen mindestens einen Namen eingeben!", vbCritical + vbOKOnly, "FEHLER!"
Exit Sub
End If
lZeile = 2
Do While Trim(CStr(Tabelle1.Cells(lZeile, 1).Value)) ""
If ListBox1.Text = Trim(CStr(Tabelle1.Cells(lZeile, 1).Value)) Then
Tabelle1.Cells(lZeile, 1).Value = Trim(CStr(TextBox1.Text))
Tabelle1.Cells(lZeile, 2).Value = TextBox2.Text
Tabelle1.Cells(lZeile, 3).Value = TextBox3.Text
Tabelle1.Cells(lZeile, 4).Value = TextBox4.Text
Tabelle1.Cells(lZeile, 5).Value = TextBox5.Text
Tabelle1.Cells(lZeile, 6).Value = TextBox6.Text
Tabelle1.Cells(lZeile, 7).Value = TextBox7.Text
Tabelle1.Cells(lZeile, 8).Value = TextBox8.Text
Tabelle1.Cells(lZeile, 9).Value = TextBox9.Text
Tabelle1.Cells(lZeile, 10).Value = TextBox10.Text
Tabelle1.Cells(lZeile, 11).Value = TextBox11.Text
If CheckBox1.Value Then
Tabelle1.Cells(lZeile, 12) = "1"
Else
Tabelle1.Cells(lZeile, 12) = ""
End If
If ListBox1.Text Trim(CStr(TextBox1.Text)) Then
Call UserForm1_Initialize
If ListBox1.ListCount > 0 Then ListBox1.ListIndex = 0
End If
Exit Do
End If
lZeile = lZeile + 1
Loop
End Sub
Private Sub CommandButton4_Click()
Unload Me
End Sub
Private Sub ListBox1_Click()
Dim lZeile As Long
TextBox1 = ""
TextBox2 = ""
TextBox3 = ""
TextBox4 = ""
TextBox5 = ""
TextBox6 = ""
TextBox7 = ""
TextBox8 = ""
TextBox9 = ""
TextBox10 = ""
TextBox11 = ""
CheckBox1.Value = False
If ListBox1.ListIndex >= 0 Then
lZeile = 2
Do While Trim(CStr(Tabelle1.Cells(lZeile, 1).Value)) ""
If ListBox1.Text = Trim(CStr(Tabelle1.Cells(lZeile, 1).Value)) Then
TextBox1 = Trim(CStr(Tabelle1.Cells(lZeile, 1).Value))
TextBox2 = Tabelle1.Cells(lZeile, 2).Value
TextBox3 = Tabelle1.Cells(lZeile, 3).Value
TextBox4 = Tabelle1.Cells(lZeile, 4).Value
TextBox5 = Tabelle1.Cells(lZeile, 5).Value
TextBox6 = Tabelle1.Cells(lZeile, 6).Value
TextBox7 = Tabelle1.Cells(lZeile, 7).Value
TextBox8 = Tabelle1.Cells(lZeile, 8).Value
TextBox9 = Tabelle1.Cells(lZeile, 9).Value
TextBox10 = Tabelle1.Cells(lZeile, 10).Value
TextBox11 = Tabelle1.Cells(lZeile, 11).Value
CheckBox1.Value = Tabelle1.Cells(lZeile, 12).Value
Exit Do
End If
lZeile = lZeile + 1
Loop
End If
End Sub
Private Sub UserForm_Activate()
If ListBox1.ListCount > 0 Then ListBox1.ListIndex = 0
End Sub
Private Sub UserForm1_Initialize()
Dim lZeile As Long
TextBox1 = ""
TextBox2 = ""
TextBox3 = ""
TextBox4 = ""
TextBox5 = ""
TextBox6 = ""
TextBox7 = ""
TextBox8 = ""
TextBox9 = ""
TextBox10 = ""
TextBox11 = ""
CheckBox1.Enabled = True
CheckBox1.Value = False
ListBox1.Clear
lZeile = 2
Do While Trim(CStr(Tabelle1.Cells(lZeile, 1).Value)) ""
ListBox1.AddItem Trim(CStr(Tabelle1.Cells(lZeile, 1).Value))
lZeile = lZeile + 1
Loop
End Sub
Private Sub CommandButton1_Click()
Dim lZeile As Long
lZeile = 2
Do While Trim(CStr(Tabelle1.Cells(lZeile, 1).Value)) ""
lZeile = lZeile + 1
Loop
Tabelle1.Cells(lZeile, 1) = CStr(lZeile)
ListBox1.AddItem CStr(lZeile)
ListBox1.ListIndex = ListBox1.ListCount - 1
CheckBox1.Value = False
End Sub
Private Sub CommandButton2_Click()
Dim lZeile As Long
If ListBox1.ListIndex = -1 Then Exit Sub
lZeile = 2
Do While Trim(CStr(Tabelle1.Cells(lZeile, 1).Value)) ""
If ListBox1.Text = Trim(CStr(Tabelle1.Cells(lZeile, 1).Value)) Then
Tabelle1.Rows(CStr(lZeile & ":" & lZeile)).Delete
Call UserForm1_Initialize
If ListBox1.ListCount > 0 Then ListBox1.ListIndex = 0
Exit Do
End If
lZeile = lZeile + 1
Loop
End Sub
Private Sub CommandButton3_Click()
Dim lZeile As Long
If ListBox1.ListIndex = -1 Then Exit Sub
If Trim(CStr(TextBox1.Text)) = "" Then
MsgBox "Sie müssen mindestens einen Namen eingeben!", vbCritical + vbOKOnly, "FEHLER!"
Exit Sub
End If
lZeile = 2
Do While Trim(CStr(Tabelle1.Cells(lZeile, 1).Value)) ""
If ListBox1.Text = Trim(CStr(Tabelle1.Cells(lZeile, 1).Value)) Then
Tabelle1.Cells(lZeile, 1).Value = Trim(CStr(TextBox1.Text))
Tabelle1.Cells(lZeile, 2).Value = TextBox2.Text
Tabelle1.Cells(lZeile, 3).Value = TextBox3.Text
Tabelle1.Cells(lZeile, 4).Value = TextBox4.Text
Tabelle1.Cells(lZeile, 5).Value = TextBox5.Text
Tabelle1.Cells(lZeile, 6).Value = TextBox6.Text
Tabelle1.Cells(lZeile, 7).Value = TextBox7.Text
Tabelle1.Cells(lZeile, 8).Value = TextBox8.Text
Tabelle1.Cells(lZeile, 9).Value = TextBox9.Text
Tabelle1.Cells(lZeile, 10).Value = TextBox10.Text
Tabelle1.Cells(lZeile, 11).Value = TextBox11.Text
If CheckBox1.Value Then
Tabelle1.Cells(lZeile, 12) = "1"
Else
Tabelle1.Cells(lZeile, 12) = ""
End If
If ListBox1.Text Trim(CStr(TextBox1.Text)) Then
Call UserForm1_Initialize
If ListBox1.ListCount > 0 Then ListBox1.ListIndex = 0
End If
Exit Do
End If
lZeile = lZeile + 1
Loop
End Sub
Private Sub CommandButton4_Click()
Unload Me
End Sub
Private Sub ListBox1_Click()
Dim lZeile As Long
TextBox1 = ""
TextBox2 = ""
TextBox3 = ""
TextBox4 = ""
TextBox5 = ""
TextBox6 = ""
TextBox7 = ""
TextBox8 = ""
TextBox9 = ""
TextBox10 = ""
TextBox11 = ""
CheckBox1.Value = False
If ListBox1.ListIndex >= 0 Then
lZeile = 2
Do While Trim(CStr(Tabelle1.Cells(lZeile, 1).Value)) ""
If ListBox1.Text = Trim(CStr(Tabelle1.Cells(lZeile, 1).Value)) Then
TextBox1 = Trim(CStr(Tabelle1.Cells(lZeile, 1).Value))
TextBox2 = Tabelle1.Cells(lZeile, 2).Value
TextBox3 = Tabelle1.Cells(lZeile, 3).Value
TextBox4 = Tabelle1.Cells(lZeile, 4).Value
TextBox5 = Tabelle1.Cells(lZeile, 5).Value
TextBox6 = Tabelle1.Cells(lZeile, 6).Value
TextBox7 = Tabelle1.Cells(lZeile, 7).Value
TextBox8 = Tabelle1.Cells(lZeile, 8).Value
TextBox9 = Tabelle1.Cells(lZeile, 9).Value
TextBox10 = Tabelle1.Cells(lZeile, 10).Value
TextBox11 = Tabelle1.Cells(lZeile, 11).Value
CheckBox1.Value = Tabelle1.Cells(lZeile, 12).Value
Exit Do
End If
lZeile = lZeile + 1
Loop
End If
End Sub
Private Sub UserForm1_Activate()
If ListBox1.ListCount > 0 Then ListBox1.ListIndex = 0
End Sub
Private Sub UserForm1_Initialize()
Dim lZeile As Long
TextBox1 = ""
TextBox2 = ""
TextBox3 = ""
TextBox4 = ""
TextBox5 = ""
TextBox6 = ""
TextBox7 = ""
TextBox8 = ""
TextBox9 = ""
TextBox10 = ""
TextBox11 = ""
CheckBox1.Enabled = True
CheckBox1.Value = False
' ListBox1.Clear
lZeile = 2
Do While Trim(CStr(Tabelle1.Cells(lZeile, 1).Value)) ""
ListBox1.AddItem Trim(CStr(Tabelle1.Cells(lZeile, 1).Value))
lZeile = lZeile + 1
Loop
End Sub
'Checkbox Werte aus Tabelle einlesen
'bei wenigen Checkboxen:
CheckBox1 = Tabelle1.Cells(lZeile, 12).Value = 1
'bei vielen Checkboxen z.B
Dim i As Integer, Anzahl As Integer
Anzahl = 2 'Anzahl der Checkboxen
For i = 1 To Anzahl
Me.Controls("CheckBox" & i) = Tabelle1.Cells(lZeile, 11 + i).Value = 1
Next
'Einzelne Checkboxwerte in Tabelle schreiben
Tabelle1.Cells(lZeile, 12) = IIf(Me.CheckBox1, 1, "")
'Viele Checkboxwerte in Tabelle schreiben
Dim i As Integer, Anzahl As Integer
Anzahl = 2 'Anzahl der Checkboxen
For i = 1 To Anzahl
Tabelle1.Cells(lZeile, 11 + i) = IIf(Me.Controls("CheckBox" & i), 1, "")
Next
In der Initialisierungsprozedur muss du die Checkboxen nicht auf False setzen.
Private Sub prcZahlinZelle(rngZelle As Range, strText As String)
If strText = "" Then
rngZelle.ClearContents
ElseIf IsNumeric(strText) Then
rngZelle.Value = CDbl(strText)
Else
rngZelle.Value = strText
End If
End Sub
Private Sub CommandButton3_Click()
'Datensatz Speichern
Dim lZeile As Long
Dim varID As Variant
If ListBox1.ListIndex = -1 Then Exit Sub
If Trim(CStr(TextBox2.Text)) = "" Or Trim(CStr(TextBox3.Text)) = "" Then
MsgBox "Sie müssen mindestens einen Namen und das Datum eingeben!", _
vbCritical + vbOKOnly, "FEHLER!"
Exit Sub
End If
With wksZiel
'Zeile mit ID suchen
lZeile = fncZeile_zu_ID(varID:=ListBox1.Text)
If lZeile > 0 Then
Call BlattschutzAUS(wksZiel)
.Cells(lZeile, 1).Value = Trim(CStr(TextBox1.Text)) '
.Cells(lZeile, 2).Value = TextBox2.Text
With TextBox3
If IsDate(.Text) Then
wksZiel.Cells(lZeile, 3).Value = CDate(.Text)
ElseIf .Text = "" Then
wksZiel.Cells(lZeile, 3).ClearContents
Else
wksZiel.Cells(lZeile, 3).Value = .Text
End If
End With
.Cells(lZeile, 4).Value = TextBox4.Text
Call prcZahlinZelle(rngZelle:=.Cells(lZeile, 5), strText:=TextBox5.Text) 'Spalte
Call prcZahlinZelle(rngZelle:=.Cells(lZeile, 6), strText:=TextBox6.Text) 'Zeile
Call prcZahlinZelle(rngZelle:=.Cells(lZeile, 7), strText:=TextBox7.Text) ' _
Priorität
.Cells(lZeile, 8).Value = TextBox8.Text
.Cells(lZeile, 9).Value = TextBox9.Text
.Cells(lZeile, 10).Value = TextBox10.Text
.Cells(lZeile, 11).Value = TextBox11.Text
.Cells(lZeile, 12) = IIf(Me.CheckBox1.Value = True, 1, "")
Call BlattschutzEIN(wksZiel)
If ListBox1.Text Trim(CStr(TextBox1.Text)) Then
varID = Trim(CStr(TextBox1.Text))
Call prcListbox1_Auswahlliste
If ListBox1.ListCount > 0 Then ListBox1.Value = varID
End If
End If
End With 'wksZiel
End Sub
Öffne den VBA-Editor: Drücke ALT
+ F11
, um den VBA-Editor in Excel zu öffnen.
Füge eine Userform hinzu: Klicke mit der rechten Maustaste auf einen Eintrag im Projektfenster und wähle Einfügen
> UserForm
.
Füge eine Checkbox hinzu: Wähle die Checkbox aus der Toolbox aus und ziehe sie auf die Userform.
Setze den Standardwert der Checkbox: Gehe zu den Eigenschaften der Checkbox und setze Value
auf False
.
Verwende den folgenden VBA-Code in der Userform, um den Wert der Checkbox in eine bestimmte Zelle zu schreiben:
Private Sub CheckBox1_Click()
If CheckBox1.Value = True Then
Tabelle1.Cells(1, 1).Value = "1"
Else
Tabelle1.Cells(1, 1).Value = "0"
End If
End Sub
Speichere die Änderungen und teste die Userform, indem du sie aus dem VBA-Editor startest.
Fehler: Checkbox funktioniert nicht richtig
Fehler: Standardwert nicht gesetzt
Value
der Checkbox in den Eigenschaften auf False
gesetzt hast.Fehler: Daten werden nicht gespeichert
Eine alternative Methode zur Verwendung von Checkboxen in Excel ist die Verwendung von Option Buttons innerhalb einer ListBox. Dies kann die Handhabung vereinfachen, insbesondere wenn du mit vielen Checkboxen arbeitest. Du kannst in der ListBox die ListStyle
auf Option
setzen, um die Auswahl zu optimieren.
Hier ist ein Beispiel, wie du mehrere Checkboxen in einer Userform handhaben kannst:
Private Sub CommandButton1_Click()
Dim i As Integer
For i = 1 To 10 ' Beispiel für 10 Checkboxen
If Me.Controls("CheckBox" & i).Value = True Then
Tabelle1.Cells(i, 1).Value = "1"
Else
Tabelle1.Cells(i, 1).Value = "0"
End If
Next i
End Sub
In diesem Beispiel wird eine Schleife verwendet, um die Werte der Checkboxen in die entsprechenden Zellen zu schreiben. Dies ist besonders nützlich, wenn du viele Checkboxen hast.
If...Then
-Anweisungen ein, um die Logik zu steuern, je nachdem, ob die Checkbox aktiviert ist oder nicht.1. Wie kann ich eine Checkbox als Standardwert auf "false" setzen?
Um eine Checkbox standardmäßig auf "false" zu setzen, geh in die Eigenschaften der Checkbox und stelle Value
auf False
.
2. Wie kann ich den Wert einer Checkbox in Excel VBA abfragen?
Du kannst den Wert einer Checkbox einfach mit If CheckBox1.Value = True Then
abfragen.
3. Kann ich mehrere Checkboxen gleichzeitig verwalten?
Ja, du kannst mehrere Checkboxen in einer Schleife verwalten, indem du Me.Controls("CheckBox" & i)
verwendest, um auf die einzelnen Checkboxen zuzugreifen.
4. Was ist der Unterschied zwischen True
und False
bei einer Checkbox?
True
bedeutet, dass die Checkbox aktiviert ist, während False
angibt, dass sie deaktiviert ist. In Bezug auf Excel bedeutet dies, dass du entweder "1" oder "0" in die Zelle schreiben kannst, je nach Zustand der Checkbox.
Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden
Suche nach den besten AntwortenEntdecke unsere meistgeklickten Beiträge in der Google Suche
Top 100 Threads jetzt ansehen