Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Name der aktiven/angeklickten Checkbox auslesen

Forumthread: Name der aktiven/angeklickten Checkbox auslesen

Name der aktiven/angeklickten Checkbox auslesen
Thorsten
Hallo Experten,
langsam verzweifel ich ein wenig an folgender Problematik:
Ich möchte ein generisches Makro erstellen, welches die Hintergrundfarbe einer Checkbox (Steuerelemente-Toolbox, KEIN Kontrollkästchen) bei DEREN Anklicken verändert. Hintergrundfarbe einer Checkbox ändern ist ja kein Problem, aber wie teile ich dem Makro mit, um welche Checkbox es sich handelt? Die Checkbox ist in kein Userform o.ä. eingebettet. Auch folgt der Checkbox-Name keiner Konvention, kann also mal "chkbox_abc" oder "checkbox_01_1" heißen, daher ist der Durchlauf mit einer Schleife so auch nicht möglich. Auch kann es pro Blatt eine unterschiedliche Zahl an Checkboxen geben.
Beispielhaft suche ich also nach folgendem Code:
Private Sub ChkBx91a_Click()
checkboxname = ActiveCheckbox.name
Call makro(checkboxname)
End Sub

Nur leider gibt's ja kein "ActiveCheckbox"-Element, oder?
Danke für Eure Hilfe,
viele Grüße
Thorsten
Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Name der aktiven/angeklickten Checkbox auslesen
17.07.2009 16:01:15
So

Private Sub ChkBx91a_Click()
Dim checkboxname As String
checkboxname = "ChkBx91a"
Call makro(checkboxname)
End Sub

Wobei unklar ist, was makro bewirkrn soll.
AW: Name der aktiven/angeklickten Checkbox auslesen
17.07.2009 17:15:42
Thorsten
Hallo,
danke für die schnelle Antwort. Allerdings ist es genau das, was ich vermeiden möchte, nämlich der Variablen "checkboxname" den Wert manuell zuzuweisen.
Darum geht es insbesondere um den Code: checkboxname = ActiveCheckbox.name
Diese Syntax funktioniert ja so nicht, sondern muss, wenn es für die Abfrage des aktuellen Checkboxnamens überhaupt eine Syntax gibt, anders lauten. Und da weiß ich nicht weiter ... wie lautet die korrekte Syntax um den Namen der aktiven Checkbox abzufragen?
Danke und Gruß
Thorsten
PS. Das aufgerufene Makro soll den Hintergrund der Checkbox von Rot in grün färben, da angehakt wird, dass dieser Teilbereich bearbeitet wurde ...
Anzeige
AW: Name der aktiven/angeklickten Checkbox auslesen
17.07.2009 17:32:47
Gerd
Hi,
da kommst du dann um Klassenprogrammierung nicht herum, im Archiv gibts
Beispiele dazu.
mfg Gerd
AW: Name der aktiven/angeklickten Checkbox auslesen
19.07.2009 19:31:47
Thorsten
Hallo,
danke für die Info, auch wenn das ja etwas bedauerlich ist ...
Viele Grüße
Thorsten
;
Anzeige
Anzeige

Infobox / Tutorial

Name der aktiven Checkbox auslesen in Excel VBA


Schritt-für-Schritt-Anleitung

Um den Namen der aktiven Checkbox in Excel mit VBA auszulesen, kannst Du eine Klasse erstellen, die es Dir ermöglicht, die Checkbox-Events besser zu handhaben. Hier ist eine Schritt-für-Schritt-Anleitung:

  1. Erstelle eine neue Klasse:

    • Gehe zu EinfügenKlasse und nenne die Klasse CheckboxHandler.
  2. Füge folgenden Code in die Klasse ein:

    Public WithEvents CheckBox As MSForms.CheckBox
    
    Private Sub CheckBox_Click()
       Dim checkboxName As String
       checkboxName = CheckBox.Name
       Call makro(checkboxName)
    End Sub
  3. Füge diesen Code in ein Modul ein:

    Dim handler As CheckboxHandler
    
    Sub Initialize()
       Dim cb As MSForms.CheckBox
       Set handler = New CheckboxHandler
       Set handler.CheckBox = ActiveSheet.CheckBoxes(Application.Caller)
    End Sub
  4. Rufe das Makro auf:

    • Stelle sicher, dass Du Initialize vor dem Klicken auf die Checkbox aufrufst, um die Klasse zu initialisieren.

Damit kannst Du den Namen der aktiven Checkbox ermitteln und das gewünschte Makro aufrufen.


Häufige Fehler und Lösungen

  • Fehler: "Objektvariable nicht gesetzt"

    • Lösung: Stelle sicher, dass Du die Klasse vor dem Klicken auf die Checkbox initialisierst.
  • Fehler: Checkbox nicht gefunden

    • Lösung: Überprüfe, ob die Checkbox im aktiven Blatt vorhanden ist und dass Du die richtige Checkbox referenzierst.

Alternative Methoden

Wenn Du keine Klassen verwenden möchtest, kannst Du auch die Checkbox direkt ansprechen. Hier ist eine einfache Methode:

Sub Checkbox_Click()
    Dim checkboxName As String
    checkboxName = Application.Caller
    Call makro(checkboxName)
End Sub

In diesem Fall wird der Name der Checkbox direkt über Application.Caller ermittelt, wenn die Checkbox angeklickt wird.


Praktische Beispiele

Hier ist ein Beispiel, wie Du die Hintergrundfarbe der Checkbox ändern kannst:

Sub makro(checkboxName As String)
    With ActiveSheet.CheckBoxes(checkboxName)
        If .Interior.Color = RGB(255, 0, 0) Then
            .Interior.Color = RGB(0, 255, 0) ' Ändert auf grün
        Else
            .Interior.Color = RGB(255, 0, 0) ' Ändert auf rot
        End If
    End With
End Sub

Dieses Beispiel zeigt, wie Du die Hintergrundfarbe einer Checkbox ändern kannst, abhängig von ihrem aktuellen Status.


Tipps für Profis

  • Nutze die WithEvents-Anweisung, um eine bessere Event-Verwaltung in Deinen VBA-Projekten zu erreichen.
  • Dokumentiere Deinen Code gut, um die Wartung zu erleichtern.
  • Experimentiere mit verschiedenen Steuerelementen, um herauszufinden, welche am besten für Deine Bedürfnisse geeignet sind.

FAQ: Häufige Fragen

1. Wie kann ich mehrere Checkboxen gleichzeitig verwalten?
Du kannst eine Schleife verwenden, um durch alle Checkboxen im aktiven Blatt zu iterieren und die oben genannten Methoden anzuwenden.

2. Funktioniert das auch in älteren Excel-Versionen?
Ja, die VBA-Methoden sind in den meisten Excel-Versionen verfügbar, allerdings können sich die Steuerelemente je nach Version unterscheiden. Stelle sicher, dass Du die richtige Referenz verwendest.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige