Abfrage was in einer UserForm angeklickt wurde
Schritt-für-Schritt-Anleitung
Um herauszufinden, welcher Button in einer UserForm angeklickt wurde, kannst Du folgende Schritte ausführen:
-
Öffne den Visual Basic for Applications (VBA) Editor in Excel (ALT + F11).
-
Erstelle eine UserForm mit mehreren Buttons oder Radiobuttons.
-
Füge den folgenden Code in die UserForm ein, um die Aktivierung der Buttons zu erkennen:
Private Sub CommandButton1_Click()
TellMe (Me.ActiveControl.Name)
End Sub
Private Sub CommandButton2_Click()
TellMe (Me.ActiveControl.Name)
End Sub
' Füge weitere Buttons hinzu, wenn nötig
-
Erstelle ein neues Modul und füge den folgenden Code hinzu:
Sub TellMe(myCtrl As String)
MsgBox myCtrl & " wurde geklickt"
End Sub
Jetzt wird bei jedem Klick auf einen Button der Name des Buttons in einer MessageBox angezeigt.
Häufige Fehler und Lösungen
-
Fehler: Die MessageBox zeigt nicht den richtigen Button-Namen an.
Lösung: Stelle sicher, dass Du Me.ActiveControl.Name in die korrekten Button-Events eingefügt hast.
-
Fehler: Das Makro wird nicht ausgeführt.
Lösung: Überprüfe, ob die Makros in den Excel-Einstellungen aktiviert sind.
Alternative Methoden
Eine weitere Möglichkeit, die Du verwenden kannst, ist die Verwendung eines allgemeinen Subroutinen für alle Buttons:
-
Füge den folgenden Code in die UserForm ein:
Private Sub CommandButton1_Click()
Zeig
End Sub
Private Sub CommandButton2_Click()
Zeig
End Sub
' Füge weitere Buttons hinzu
-
In einem allgemeinen Modul:
Sub Zeig()
MsgBox UserForm1.ActiveControl.Name
End Sub
Diese Methode reduziert den Codeaufwand, da alle Buttons auf die gleiche Subroutine verweisen.
Praktische Beispiele
Hier sind einige Beispiele, wie Du die oben genannten Methoden anwenden kannst:
-
Mit Radiobuttons: Wenn Du 30 Radiobuttons hast, kannst Du für jeden Button die gleiche Click-Ereignisprozedur verwenden, um den ausgewählten Button zu identifizieren.
Private Sub OptionButton1_Click()
TellMe (Me.ActiveControl.Name)
End Sub
-
Verwendung von Klassenmodulen: Wenn Du eine komplexere Logik benötigst, könnte die Verwendung eines Klassenmoduls sinnvoll sein, um die Buttons besser zu organisieren.
Tipps für Profis
- Verwende Klassenmodule: Wenn Du viele Controls hast, kann ein Klassenmodul helfen, den Code übersichtlicher zu gestalten und wiederverwendbar zu machen.
- Verwende die
Tag-Eigenschaft: Du kannst die Tag-Eigenschaft der Buttons nutzen, um zusätzliche Informationen zu speichern, die Du später im Code abrufen kannst.
FAQ: Häufige Fragen
1. Frage: Kann ich die Abfrage auch für andere Control-Typen verwenden?
Antwort: Ja, die Methoden können auch auf andere Controls wie Textfelder und Listenfelder angewendet werden.
2. Frage: Was ist der Vorteil eines Klassenmoduls?
Antwort: Klassenmodule bieten eine strukturierte Möglichkeit, Daten und Funktionen zu kapseln, was die Wartbarkeit des Codes verbessert.