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

Forumthread: CommandButton - Farbe ändern per VBA

CommandButton - Farbe ändern per VBA
15.05.2009 08:18:37
Tobiax
Hallo!
Ich habe einen CommandButton bei dem ich per VBA die Farbe verändern will.
Wer kann mir helfen ?
Toby ...
Anzeige

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: CommandButton - Farbe ändern per VBA
15.05.2009 08:23:33
Hajo_Zi
Hallo Toby,

Private Sub CommandButton4_Click()
If CommandButton1.BackColor = RGB(0, 255, 255) Then Exit Sub
CommandButton1.BackColor = RGB(0, 255, 255)
' Dein Code
End Sub



Anzeige
AW: CommandButton - Farbe ändern per VBA
15.05.2009 08:30:08
Tobiax
Das klappt nicht so richtig.
Ich habe 18 Button, die immer das selbe Makro aufrufen.
Hierdurch verändert sich, was im Makro abläuft.
Mannschaft = ActiveSheet.Shapes(Application.Caller).AlternativeText
Es soll auch nur der Button grün werden, der hier betätigt wurde.
Toby ...
P.S.: Wie setze ich zum Schluss alle 18 Button wieder auf grau ?
Anzeige
AW: CommandButton - Farbe ändern per VBA
15.05.2009 08:37:53
Hajo_Zi
Hallo Toby,
nach folgendem Prinzip

Private Sub CommandButton4_Click()
Dim InI As Integer
For InI = 2 To 4
ActiveSheet.OLEObjects("CommandButton" & InI).Object.BackColor = RGB(0, 255, 0)
Next
'    CommandButton1.BackColor = RGB(0, 255, 0)
End Sub


Gruß Hajo

Anzeige
AW: CommandButton - Farbe ändern per VBA
15.05.2009 09:42:19
Tobiax
Hallo!
Wie rufe ich denn private subs auf?
Das kann doch nicht funktionieren.
Meine Button sind alle mit Namen Belegt und sind nicht mit CommandButtonNR.
Den angeklickten Button hätte ich gerne grün.
Kann ich das nicht so ähnlich machen, wie ich mir den Text aus dem Button auslese?
Toby ...
Hier mal die Datei: https://www.herber.de/bbs/user/61840.xls
Vielleicht reden air auch nur aneinander vorbei.
Wenn ich auf die Mannschaft klicke, dann soll der Button grün werden und mein Kram ausgeführt werden.
Anzeige
AW: CommandButton - Farbe ändern per VBA
15.05.2009 09:43:41
Tobiax
Hallo!
Wie rufe ich denn private subs auf?
Das kann doch nicht funktionieren.
Meine Button sind alle mit Namen Belegt und sind nicht mit CommandButtonNR.
Den angeklickten Button hätte ich gerne grün.
Kann ich das nicht so ähnlich machen, wie ich mir den Text aus dem Button auslese?
Toby ...
Hier mal die Datei: https://www.herber.de/bbs/user/61840.xls
Vielleicht reden air auch nur aneinander vorbei.
Wenn ich auf die Mannschaft klicke, dann soll der Button grün werden und mein Kram ausgeführt werden.
Anzeige
AW: Normale Grafikelemente statt Formularbuttons
15.05.2009 11:01:08
Daniel
Hi
ich würde statt der Formulafeld-Buttons (deren Farbe du eigentlich nicht ändern kannst) normale Text-Felder aus den Grafikelementen verwenden.
auch diesen Grafik-Elementen kannst du auf gleiche weise wie den Formularfeldern ein Makro zuweisen.
die Farbe änderst du mit diesem Code (index-Nr. der Farbe ggf an deine Wünsche anpassen)

ActiveSheet.Shapes(Application.Caller).Fill.ForeColor.SchemeColor = 15


und den Textinhalt mit folgendem Code abfragen:


ActiveSheet.Shapes(Application.Caller).TextFrame.Characters.Text


das rücksetzen der Farben erfolgt dann mit diesem Code:


dim shp as Shape
for each shp in activesheet.Shapes
shp.Fill.ForeColor.SchemeColor = 10
next


der Code muss natürlich ins Makro "Eingabe abschließen"
Gruß, Daniel
ps. du musst nicht für jedes Makro ein eigenes Modul anlegen. Man kann auch mehrere Makros in ein Modul schreiben.

Anzeige
AW: Normale Grafikelemente statt Formularbuttons
15.05.2009 14:29:21
Tobiax
Ist mir auch aufgefallen.
War mein Fehler.
Habe es mit deinem Vorschlag geändert. Jetzte ist das WE gerettet.
DANKE !!!
CommandButton1.BackColor = ...
15.05.2009 08:25:05
Matthias
Hallo
Beispiel:
einfach mit den Zahlen experimentieren.
CommandButton1.BackColor = RGB(255, 255, 255)
Gruß Matthias
AW: CommandButton1.BackColor = ...
15.05.2009 10:09:11
Tobiax
So klappt das leider nicht.
Siehe letzter Post von mir.
Toby ...
Anzeige
AW: weil die Jungs nicht gesehen haben
15.05.2009 11:07:23
Daniel
daß du keine Commandbuttons aus der Steuerelementleiste, sondern die Buttons aus den Formularfeldern verwendest hast (allerdings war deine Aufgabenbeschreibung auch nicht eindeutig).
beide Elemente sehen zwar gleich aus, unterscheiden sich aber deutlich in der dahinterliegenden Programmierung.
ich würde aber hier weder Steuerelementbuttons verwenden (da braucht jeder Button seinen eigenen Code) noch Formularfeldbuttons (die kannst du nicht umfärben) sondern normale Textfelder aus den Grafikelementen.
denen kannst du auch ein Makro zuweisen wie den Formularfeldern und du kannst sie umfärben wie die Steuerelemente.
wie der entsprechende Code dazu aussieht, steht in meinem andern Beitrag.
Gruß, Daniel
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

CommandButton-Farbe ändern per VBA


Schritt-für-Schritt-Anleitung

Um die Farbe eines CommandButtons in Excel per VBA zu ändern, folge diesen Schritten:

  1. Öffne deine Excel-Datei und gehe in den Visual Basic for Applications (VBA) Editor, indem du ALT + F11 drückst.
  2. Füge einen CommandButton in dein UserForm oder auf dein Arbeitsblatt ein.
  3. Klicke mit der rechten Maustaste auf den CommandButton und wähle "Code anzeigen".
  4. Gib den folgenden VBA-Code ein, um die Hintergrundfarbe beim Klicken zu ändern:
Private Sub CommandButton1_Click()
    CommandButton1.BackColor = RGB(0, 255, 0) ' Ändert die Farbe auf grün
End Sub
  1. Um alle Buttons auf eine Standardfarbe zurückzusetzen, verwende diesen Code:
Dim shp As Shape
For Each shp In ActiveSheet.Shapes
    If TypeName(shp.OLEFormat.Object) = "CommandButton" Then
        shp.OLEFormat.Object.BackColor = RGB(192, 192, 192) ' Setzt die Farbe auf grau
    End If
Next shp

Häufige Fehler und Lösungen

  • Fehler: Der Button ändert die Farbe nicht.

    • Lösung: Stelle sicher, dass der Button den richtigen Namen hat. Du kannst den Namen im Eigenschaftenfenster des VBA-Editors überprüfen.
  • Fehler: Alle Buttons ändern sich gleichzeitig.

    • Lösung: Verwende Application.Caller, um den spezifischen Button zu identifizieren, der angeklickt wurde. Beispiel:
Private Sub CommandButton1_Click()
    ActiveSheet.Shapes(Application.Caller).OLEFormat.Object.BackColor = RGB(0, 255, 0)
End Sub

Alternative Methoden

Wenn du die Farbe von Excel-Formularsteuerelementen ändern möchtest, kannst du normale Textfelder aus Grafikelementen verwenden. Diese können ebenfalls mit Makros verknüpft werden. Der folgende Code ändert die Farbe eines Grafikelements:

ActiveSheet.Shapes(Application.Caller).Fill.ForeColor.RGB = RGB(0, 255, 0)

Um die Farben bei einem Klick zu ändern, benutze diesen Code:

ActiveSheet.Shapes(Application.Caller).Fill.ForeColor.RGB = RGB(255, 0, 0)

Praktische Beispiele

Hier sind einige praktische Beispiele, wie du die Farbe von Schaltflächen in Excel ändern kannst:

  1. Farbe ändern bei Klick:
Private Sub CommandButton1_Click()
    CommandButton1.BackColor = RGB(255, 0, 0) ' Rot
End Sub
  1. Alle Schaltflächen auf grau zurücksetzen:
Sub ResetButtonColors()
    Dim shp As Shape
    For Each shp In ActiveSheet.Shapes
        If TypeName(shp.OLEFormat.Object) = "CommandButton" Then
            shp.OLEFormat.Object.BackColor = RGB(192, 192, 192) ' Grau
        End If
    Next shp
End Sub

Tipps für Profis

  • Verwende Variablen: Um den Code effizienter zu gestalten, verwende Variablen, um wiederkehrende Werte zu speichern.
  • Farbe als Parameter: Du kannst die gewünschte Farbe als Parameter in deine Subroutine übergeben, um den Code flexibler zu gestalten.
  • Debugging: Nutze das Debug.Print-Statement, um Werte zu überprüfen, falls etwas nicht wie erwartet funktioniert.

FAQ: Häufige Fragen

1. Wie ändere ich die Farbe eines Excel-Buttons ohne VBA? Es ist nicht möglich, die Farbe eines Excel-Buttons ohne VBA zu ändern. Du musst die VBA-Programmierung verwenden, um die BackColor-Eigenschaft zu ändern.

2. Kann ich die Farbe aller CommandButtons gleichzeitig ändern? Ja, du kannst eine Schleife verwenden, um die Farbe aller CommandButtons auf dem aktuellen Arbeitsblatt zu ändern.

3. Wie kann ich den Text eines Buttons in VBA ändern? Du kannst die Caption-Eigenschaft des Buttons ändern, um den Text zu aktualisieren:

CommandButton1.Caption = "Neuer Text"

4. Was passiert, wenn ich einen Button klicke und keine Aktion ausgeführt wird? Überprüfe, ob der richtige Code im Click-Ereignis des Buttons implementiert wurde und ob keine Fehler im VBA-Code vorhanden sind.

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