Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Name des gedrückten Commandbuttons

Forumthread: Name des gedrückten Commandbuttons

Name des gedrückten Commandbuttons
17.02.2004 12:44:41
Olsen
Hallo,
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
Anzeige

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Name des gedrückten Commandbuttons
17.02.2004 12:46:09
Alex K.
Hallo Mark,
schaue mal, was in Application.Caller steht. Normalerweise der Name des gedrückten Buttons.
AW: Name des gedrückten Commandbuttons
17.02.2004 13:35:57
Olsen
Danke für die schnelle Antwort!
was ist ein Application.Caller?
Mein Problem ist ganz speziell, das ich abhängig vom Formular-Commandbutton mithilfe Select Case Zeilen ausblenden möchte. Deshlab möchte ich eine Ausblend-Prozedur schreiben, der ich den Namen des Buttons als Variable übergebe.
Klingt kompliziert, ist aber auch schwer zu beschreiben... ;)
Trotzdem Danke
Anzeige
AW: Name des gedrückten Commandbuttons
17.02.2004 14:03:22
Alex K.
Hallo Olsen,
wenn du als "VBA gut" angibst, gehe ich doch davon aus, dass du Objekt / Methoden und Eigenschaften kennst.
Aber trotzdem hier mal ein Beispiel:

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

Wenn du diese Makro nun deinen einzelnen Schaltflächen zuweist, wirst du sehen, dass bei einem Aufruf durch Click auf einen der Button der entsprechende Name angezeigt wird.
Anzeige
AW: Name des gedrückten Commandbuttons
17.02.2004 15:59:40
Olsen
SUUPPPER!
Vielen, vielen Dank...es funktioniert!
Bzgl der Commandbuttons habe ich immer Probleme. Die heissen mal "Schaltfläche", mal "Button" und wenn ich sie verändern will, muss ich immer mit Select arbeiten.
AW: Name des gedrückten Commandbuttons
17.02.2004 16:12:10
Alex K.
Hallo Olsen,
klasse, dass es funktioniert. Mit den Namen der CommandButtons ist leicht erklärt. Es gibt in Excel zwei Möglichkeiten, mit Formular-Controls zu arbeiten:
die eingebauten MS Forms, erreichbar über die Symbolleiste "Formular". Diese Controls haben deutsche Namen, also "Schaltfläche".
Wenn du hingegen die Element aus der Symbolleiste "Steuerelement-Toolbox" verwendest, dann werden diese als sog. OLE Objekt eingebunden. Diese haben dann den englischen Namen "CommandButton". Vorteil der ersten Version ist ein wesentlich geringer Speicherbedarf in der Excel-Datei. Vorteil der zweiten, sie können auch Ereignisse verarbeiten (wie auf einer UserForm) und man kann ALLE Eigenschaften einstellen.
Anzeige
;
Anzeige

Infobox / Tutorial

Namen des gedrückten Commandbuttons in Excel VBA herausfinden


Schritt-für-Schritt-Anleitung

  1. Öffne das Excel-Dokument mit den Commandbuttons.

  2. Gehe zu den Entwicklertools und öffne den VBA-Editor (ALT + F11).

  3. Füge ein neues Modul hinzu oder wähle das bestehende Modul aus, in dem Du den Code einfügen möchtest.

  4. 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
  5. 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.

  6. Teste die Buttons, um zu sehen, welchen Namen sie zurückgeben. Der Application.Caller gibt den Namen des gedrückten Buttons zurück.


Häufige Fehler und Lösungen

  • Fehler: Der Button gibt keinen Namen zurück.

    • Lösung: Stelle sicher, dass die Subroutine korrekt zugewiesen ist und dass Du den richtigen Namen in Application.Caller verwendest.
  • Fehler: Fehlermeldung beim Ausführen des Codes.

    • Lösung: Überprüfe den Code auf Syntaxfehler und stelle sicher, dass sich der Code im richtigen Modul befindet.

Alternative Methoden

Falls Du nicht mit Application.Caller arbeiten möchtest, kannst Du auch die Button-Namen direkt in den Eigenschaften der Buttons überprüfen:

  1. Klicke mit der rechten Maustaste auf den Button.
  2. Wähle "Eigenschaften".
  3. Hier findest Du den 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.


Praktische Beispiele

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.


Tipps für Profis

  • Achte darauf, dass die Button-Namen einheitlich und nachvollziehbar sind, um die Wartung des Codes zu erleichtern.
  • Verwende die Option "Formularsteuerelemente" für eine einfachere Handhabung und weniger Speicherbedarf.
  • Wenn Du viele Buttons hast, überlege, ob Du den Code zur Reduzierung von Wiederholungen in Funktionen auslagern kannst.

FAQ: Häufige Fragen

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.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige