ich habe ein Tabellenblatt mit vielen Commandbuttons.
Wie kann ich herausfinden, welcher Button gedrückt wurde (damit ich immer die gleiche Prozedur aufrufen kann?)?
ungefähr so?!
Private sub bt_Ok_Click(buttonname as string)
Danke & Gruß
Mark
Public Sub CommandButton_Click()
msgbox Application.Caller
'hier nun deine Select-Case Anweisung mit
'select case Application.Caller
' case "Schaltfläche 1": ....
'Alternativ kannst du auch eine Prozedur aufrufen
'Call Ausblenden(Application.Caller)
End Sub
Öffne das Excel-Dokument mit den Commandbuttons.
Gehe zu den Entwicklertools und öffne den VBA-Editor (ALT + F11).
Füge ein neues Modul hinzu oder wähle das bestehende Modul aus, in dem Du den Code einfügen möchtest.
Erstelle eine Subroutine, die den Namen des gedrückten Commandbuttons ermitteln kann. Hier ist ein Beispielcode:
Public Sub CommandButton_Click()
MsgBox Application.Caller
' Hier kannst du deine Select-Case Anweisung hinzufügen
' Select Case Application.Caller
' Case "Button1": ...
' End Select
End Sub
Weise diese Subroutine jedem Commandbutton zu, indem Du die Schaltfläche mit der rechten Maustaste anklickst, "Makro zuweisen" wählst und die erstellte Subroutine auswählst.
Teste die Buttons, um zu sehen, welchen Namen sie zurückgeben. Der Application.Caller
gibt den Namen des gedrückten Buttons zurück.
Fehler: Der Button gibt keinen Namen zurück.
Application.Caller
verwendest.Fehler: Fehlermeldung beim Ausführen des Codes.
Falls Du nicht mit Application.Caller
arbeiten möchtest, kannst Du auch die Button-Namen direkt in den Eigenschaften der Buttons überprüfen:
Name
des Buttons, den Du in deinem Code verwenden kannst.Eine weitere Möglichkeit ist, eine UserForm zu verwenden, in der Du die Buttons einfügst, die dann ebenfalls Ereignisse verarbeiten können.
Hier ist ein Beispiel, wie Du eine Ausblend-Prozedur mit dem Namen des Buttons realisieren kannst:
Public Sub Ausblenden(ButtonName As String)
Select Case ButtonName
Case "Button1"
Rows("2:10").EntireRow.Hidden = True
Case "Button2"
Rows("11:20").EntireRow.Hidden = True
' Weitere Buttons hier hinzufügen
End Select
End Sub
Public Sub CommandButton_Click()
Call Ausblenden(Application.Caller)
End Sub
In diesem Beispiel wird beim Klicken auf den Button die entsprechende Zeile ausgeblendet.
1. Was ist Application.Caller
?
Application.Caller
ist eine Funktion in VBA, die den Namen des Objekts zurückgibt, das das aktuelle Ereignis ausgelöst hat, wie z.B. einen gedrückten Button.
2. Kann ich die Buttons umbenennen?
Ja, Du kannst die Buttons umbenennen, indem Du mit der rechten Maustaste auf den Button klickst und die Eigenschaften bearbeitest. Der Name
ist das, was in Application.Caller
zurückgegeben wird.
3. Funktioniert das in allen Excel-Versionen? Ja, die beschriebenen Methoden funktionieren in den meisten modernen Excel-Versionen, die VBA unterstützen.
4. Was ist der Unterschied zwischen Formularsteuerelementen und ActiveX-Steuerelementen? Formularsteuerelemente sind einfacher zu handhaben und benötigen weniger Speicher, während ActiveX-Steuerelemente mehr Anpassungsmöglichkeiten und Ereignisverarbeitung bieten.
Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden
Suche nach den besten AntwortenEntdecke unsere meistgeklickten Beiträge in der Google Suche
Top 100 Threads jetzt ansehen