Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1920to1924
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Label Caption aus Checkbox Caption

Label Caption aus Checkbox Caption
13.03.2023 11:30:44
Eddie
auf einer userform befinden sich 20 checkboxen und ein label. je nachdem welche checkboxen angeklickt werden soll in dem label die caption der checkboxen stehen,
zb.: check1, check4, check 19 wurden ausgewählt:
dann sollte in dem label als caption "check1, check4, check 19 sind aktiv" stehen.

13
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Label Caption aus Checkbox Caption
13.03.2023 11:34:47
Marc
Na im Click Event der einzelnen Checkboxen
implementieren, wenn Checkbox = true (also aktiviert)
dann
Label.Text = "Dein Text"
AW: Label Caption aus Checkbox Caption
13.03.2023 11:57:44
Eddie
Sorry die Frage war vielleicht ein bischen falsch Interpretiert. hier mal ein Beispiel-Code:
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
Anzeige
AW: Label Caption aus Checkbox Caption
13.03.2023 11:57:50
Rudi
Hallo,
Schema:
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ß
Rudi
AW: Label Caption aus Checkbox Caption
13.03.2023 11:59:41
GerdL
Hallo Eddie,
was soll im Label stehen, wenn noch keine Checkbox angehakt ist oder alle enthakt sind ? :-)
Gruß Gerd
Anzeige
AW: Label Caption aus Checkbox Caption
13.03.2023 12:02:12
Eddie
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

Anzeige
AW: Label Caption aus Checkbox Caption
13.03.2023 12:08:22
Eddie
Das ist jetzt der richtige Code bei dem ich einfach nicht weiterkomme.
Speziell hier:
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ß?
AW: Label Caption aus Checkbox Caption
13.03.2023 12:21:42
Rudi
Hallo,
das kannst du nur mit einer eigenen Klasse für deine Checkboxen.
Gruß
Rudi
AW: Label Caption aus Checkbox Caption
13.03.2023 13:06:42
Hristo
Die Verbindung mit einem generellen Makro, wie vorgeschlagen, ist die schnellere und elegantere Lösung. Aus dem Makro kann man mit Application.Caller immer herausfinden, welches CheckBox angeklickt wurde und entsprechend agieren.
Aber, ein Umweg könnte wie folgt sein:
Jedes Checkbox kann/soll eine Zelle irgendwo im Blatt ändern, nicht wahr? Zumindest kannst Du dies setzen - beim Einchecken wird eine Zelle auf TRUE gesetzt, ansonsten bleibt die Zelle FALSE.
Somit kannst du generell mit Private Sub Worksheet_Change(ByVal Target As Range) den begrenzten Bereich der Zellen überwachen, die mit deinen Checkboxen verbunden sind. Ich hätte den Bereich sogar als Named Range angelegt. Sobald eine Zelle geändert wird, rufst Du die Prozedur UpdateLabel auf:

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.
Anzeige
AW: Label Caption aus Checkbox Caption
13.03.2023 13:06:50
Daniel
Hi
gibt zwei möglichkeiten, das Click-Event für jede Checkbox zu vermeiden
a) von Basiskenntnissen in VBA in die nächtste Stufe aufsteigen und die Klassenprogrammierung erlernen.
dann kannst du die Checkboxen zu einer Klasse zusammenfassen und für diese ein gemeinsames Click-Event erstellen, dass dann für alle Elemente der Klasse gilt.
b) Ersetze die 20 Checkboxen durch eine Multiselect-Listbox.
da lässt sich das ganz einfach lösen, bspw im Click- oder MouseUp-Event der Listbox:
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.
Gruß Daniel
Anzeige
AW: Label Caption aus Checkbox Caption
13.03.2023 14:08:28
Eddie
hm also das funktioniert bei mir nicht
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
Listbox1.LISTcount, nicht Count. owT
13.03.2023 14:18:42
Rudi
AW: Listbox1.LISTcount, nicht Count. owT
13.03.2023 14:46:28
Eddie
komisch mit einem Button funktioniert es, aber beim Klick-Ereignis bleibt das label leer.
ich beötige ein Klickereignis das funktioniert. Danke
AW: Listbox1.LISTcount, nicht Count. owT
13.03.2023 15:11:10
Daniel
Hi
im Multiselect-Modus funktionert das Click-Event nicht (das reagiert auch nicht wirklich auf Mausklick, sondern auf Änderung des ListIndex und der funktionert ja nur im SingleSelect-Modus.)
alternativ kanns du den Code auch in einem der folgenden Events unterbringen:
Change-Event => nach jeder beliebigen Änderung
MouseUP-Event => beim Loslassen eines Buttons auf der Maus. Wenn du auch mit der Tastatur arbeitest brauchst du den Code auch nochmal im KeyUP-Event.
Gruß Daniel
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige