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

Forumthread: Ein Makro mehreren Buttons zuweisen

Ein Makro mehreren Buttons zuweisen
18.06.2018 15:00:56
Chris
Hallo Forum,
ich habe eine Userform mit 20 Buttons. Bei Klicke auf einem der Buttons - egal welcher - soll immer dasselbe Makro ausgeführt werden. Wie stellt man so etwas in VBA an?
Hier das auszuführende Makro - beschränkt auf den ersten Button.

If Me.CommandButton1.BackColor = vbGreen Then
Me.CommandButton1.BackColor = vbRed
End If
Schon mal danke,
Gruß Chris
Anzeige

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Ein Makro mehreren Buttons zuweisen
18.06.2018 15:30:22
Torsten
hi Chris.
Ich vesteh nicht ganz. Also wenn der Button gruen ist, soll er bei klick rot werden?
Dann mach den Code halt fuer jeden Button. CommandButton2 usw.
Oder soll immer der gleiche Button rot werden?
AW: Ein Makro mehreren Buttons zuweisen
18.06.2018 15:33:24
Chris
Hallo Torsten,
das Makro oben bezieht sich beispielhaft nur auf CB1.Da ich 20 Buttons habe möchte ich nicht das obige Makro 20 mal kopieren (If Me.CommandButton2.3.4.5.....20)....
Mein Makro oben müsste demnach auch in einer(!) Variante geändert werden, so dass es für jeden der 20 Buttons gilt.
Gruß
Chris
Anzeige
AW: Ein Makro mehreren Buttons zuweisen
18.06.2018 17:28:10
Daniel
Hi
such mal nach "Klassenprogrammierung"
damit kann man sowas machen, dh ein Eventmakro erstellen und dieses dann mehren Buttons zuweisen.
mehr kann ich dir dazu aber auch nicht sagen (sollte aber auch Beispiele im Archiv geben)
Wenn dir die Klassenprogrammierung zu kompliziert ist (so wie mir), dann kannst du dir mit dieser Vorgehensweise die Arbeit etwas erleichtern:
Du schreibst den eigentlichen Code in ein normales Makro und rufst dann von den Klick-Events nur noch dieses Makro auf, so dass du im Änderungsfall nur einmal das normale Makro anpassen musst.
Das angeklickte Steuerelement übergibt man als Parameter:
Private Sub Steuerelement_Färben(crtl as control)
If crtl.BackColor = vbGreen Then
crtl.BackColor = vbRed
End If
End Sub
du brauchst dann zwar immer noch für jeden commandbutton ein Klick-Eventmakro, aber das lässt sich ja einfach per Kontextmenü erzeugen.
in das Klickevent-Makro kommt dann diese Programmzeile:

Private Sub Commandbutton1_Click()
Call Steuerelement_Färben(ActiveControl)
End Sub
ActiveControl ist das zuletzt angeklickte Control der Userform, damit kannst du dann im KlickEventmakro das angeklickte Steuerelement referenzieren, ohne den Namen anpassen zu müssen.
damit ist der Code im Klick-Eventmakro für alle Buttons der gleiche, so dass du ihn einfach per Copy-Paste übertragen kannst.
Gruß Daniel
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Ein Makro mehreren Buttons zuweisen in Excel


Schritt-für-Schritt-Anleitung

Um ein Makro mehreren Buttons in einer Excel-Userform zuzuweisen, kannst du folgende Schritte befolgen:

  1. Erstelle eine Userform mit 20 CommandButtons (z.B. CommandButton1, CommandButton2, etc.).

  2. Füge den folgenden Code in das Modul deiner Userform ein:

    Private Sub Steuerelement_Färben(crtl As Control)
       If crtl.BackColor = vbGreen Then
           crtl.BackColor = vbRed
       End If
    End Sub
  3. Füge für jeden Button ein Click-Event-Makro hinzu, das die Funktion aufruft:

    Private Sub CommandButton1_Click()
       Call Steuerelement_Färben(ActiveControl)
    End Sub
    
    Private Sub CommandButton2_Click()
       Call Steuerelement_Färben(ActiveControl)
    End Sub
    
    ' Wiederhole das für alle anderen Buttons...
  4. Teste die Userform, indem du auf einen der Buttons klickst. Der Hintergrund des Buttons sollte von grün zu rot wechseln.


Häufige Fehler und Lösungen

  • Fehler: "Variable nicht definiert"

    • Lösung: Stelle sicher, dass du die Control-Variable als Control deklariert hast (siehe Schritt 2).
  • Fehler: Buttons reagieren nicht

    • Lösung: Überprüfe, ob die Click-Events korrekt verknüpft sind und ob der Code in der richtigen Userform platziert ist.

Alternative Methoden

Eine weitere Methode, um mehreren Buttons ein Makro zuzuweisen, ist die Verwendung von Klassenmodulen. Hierbei erstellst du ein Eventmakro, das du mehreren Buttons zuweisen kannst. Dies erfordert jedoch ein gewisses Verständnis der Klassenprogrammierung in VBA.


Praktische Beispiele

Hier ein einfaches Beispiel, um die Funktionalität zu demonstrieren:

  1. Stelle dir vor, du hast 3 Buttons (CommandButton1, CommandButton2, CommandButton3).
  2. Bei Klick auf einen der Buttons soll sich die Farbe ändern. Du verwendest den oben beschriebenen Code und fügst die Click-Events für alle drei Buttons hinzu.
  3. Teste die Userform, um sicherzustellen, dass die Funktion bei allen Buttons gleich funktioniert.

Tipps für Profis

  • Nutze Kontextmenüs, um Click-Events schnell zu generieren. Dies spart Zeit, besonders wenn du viele Buttons hast.
  • Experimentiere mit Farben und Effekten, um ein ansprechenderes Benutzererlebnis zu schaffen.
  • Halte deinen Code sauber und gut kommentiert, um zukünftige Anpassungen zu erleichtern.

FAQ: Häufige Fragen

1. Kann ich die Hintergrundfarbe auch in andere Farben ändern?
Ja, du kannst die BackColor-Eigenschaft auf jede gewünschte Farbe setzen, indem du den entsprechenden Farbwert oder eine vordefinierte Farbe verwendest.

2. Muss ich für jeden Button ein separates Click-Event schreiben?
Ja, aber du kannst den Code in der Steuerelement_Färben-Subroutine wiederverwenden, um den Aufwand zu minimieren.

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