zb.: check1, check4, check 19 wurden ausgewählt:
dann sollte in dem label als caption "check1, check4, check 19 sind aktiv" stehen.
Private Sub CheckBox1_Click()
UpdateLabel
End Sub
Private Sub CheckBox2_Click()
UpdateLabel
End Sub
' Fügen Sie hier Checkbox3 bis Checkbox20_Click Ereignisse hinzu.
Private Sub UpdateLabel()
Dim i As Integer
Dim checkedBoxes As String
' Iterieren Sie über alle Checkboxen auf der UserForm
For i = 1 To 20
' Wenn die Checkbox ausgewählt ist, fügen Sie die Beschriftung hinzu
If Controls("CheckBox" & i).Value = True Then
checkedBoxes = checkedBoxes & Controls("CheckBox" & i).Caption & ", "
End If
Next i
' Entfernen Sie das Komma am Ende und aktualisieren Sie die Label Caption
If Len(checkedBoxes) > 0 Then
checkedBoxes = Left(checkedBoxes, Len(checkedBoxes) - 2) ' entfernen Sie das letzte Komma und Leerzeichen
Label1.Caption = checkedBoxes & " sind aktiv."
Else
Label1.Caption = "Keine Checkbox ausgewählt."
End If
End Sub
Ich will nicht für jede Checkbox das Click Event aufrufen, geht das auch über eine Schleife
Private Sub CheckBox1_Click()
GetCaption
End Sub
Private Sub CheckBox2_Click()
GetCaption
End Sub
Private Sub CheckBox3_Click()
GetCaption
End Sub
Sub GetCaption()
Dim c As Control, t As String
For Each c In Me.Controls
If TypeName(c) = "CheckBox" Then
If c = True Then
t = t & ", " & c.Caption
End If
End If
Next
If Len(t) Then t = Mid(t, 3) & " aktiv"
Label1.Caption = t
End Sub
Gruß
Private Sub UserForm_Initialize()
Label1.Caption = "Keine Checkbox ausgewählt."
End Sub
Private Sub CheckBox_Click()
UpdateLabel
End Sub
Private Sub UpdateLabel()
Dim i As Integer
Dim checkedBoxes As String
For i = 1 To 20
If Controls("CheckBox" & i).Value = True Then
checkedBoxes = checkedBoxes & Controls("CheckBox" & i).Caption & ", "
End If
Next i
If Len(checkedBoxes) > 0 Then
checkedBoxes = Left(checkedBoxes, Len(checkedBoxes) - 2)
Label1.Caption = checkedBoxes & " sind aktiv."
Else
Label1.Caption = "Keine Checkbox ausgewählt."
End If
End Sub
Private Sub CheckBox_Click()
UpdateLabel
End Sub
wie kann ich diese Sub aufrufen ohne das ich für jede Checkbox das Click-Ereignis eingeben muß?
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Application.Intersect(Range("DeinCheckboxenBereich"), Range(Target.Address)) Is Nothing Then
UpdateLabel Target.Address
End If
End Sub
UpdateLabel soll dann mit dem Target.Address erkennen, welches CheckBox geklickt wurde.
Label1.Caption = ""
for i = 0 to Listbox1.Count - 1
if Listbox1.Selected(i) then Label1.Caption = Label1.Caption & Listbox1.List(i) & ", "
next
wenn man es nicht aus optischen Gründen braucht, ist eine Listbox inder Regel einfacher zu handhaben als eine Optionbutton- oder Checkboxgruppe.
Private Sub ListBox1_Click()
Label1.Caption = ""
For i = 0 To ListBox1.Count - 1
If ListBox1.Selected(i) Then Label1.Caption = Label1.Caption & ListBox1.List(i) & ", "
Next
End Sub
Label1 bleibt leer