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 SubIch 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 Subwie 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 SubLabel1 bleibt leer