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

Forumthread: CommandButton wechselweise einfaerben

CommandButton wechselweise einfaerben
06.09.2018 15:30:46
Torsten
Hallo zusammen,
mit folgendem Code wird der geklickte Button rot gefaerbt (damit user weiss, was er zuletzt geklickt hat). Wenn dann ein anderer Button geklickt wird, wird dieser rot und der vorherige bekommt die urspruengliche graue Farbe zurueck. Hier Beispiel fuer Button10. Die Buttons sind ActiveX.

Private Sub CommandButton10_Click()
Application.ScreenUpdating = False
ThisWorkbook.Sheets("Tracker").CommandButton10.BackColor = RGB(255, 0, 0)
ThisWorkbook.Sheets("Tracker").CommandButton8.BackColor = RGB(220, 220, 220)
ThisWorkbook.Sheets("Tracker").CommandButton9.BackColor = RGB(220, 220, 220)
ThisWorkbook.Sheets("Tracker").CommandButton7.BackColor = RGB(220, 220, 220)
ThisWorkbook.Sheets("Tracker").CommandButton11.BackColor = RGB(220, 220, 220)
ThisWorkbook.Sheets("Tracker").CommandButton12.BackColor = RGB(220, 220, 220)
ThisWorkbook.Sheets("Tracker").CommandButton13.BackColor = RGB(220, 220, 220)
ThisWorkbook.Sheets("Tracker").CommandButton14.BackColor = RGB(220, 220, 220)
ThisWorkbook.Sheets("Tracker").CommandButton15.BackColor = RGB(220, 220, 220)
ThisWorkbook.Sheets("Tracker").CommandButton19.BackColor = RGB(220, 220, 220)
ThisWorkbook.Sheets("Tracker").CommandButton20.BackColor = RGB(220, 220, 220)
...und weiterer Code
Meine Frage. Gibt es eine elegantere Loesung hierfuer, da, wenn es noch mehr Buttons gibt, wird die Schreibarbeit im Code unendlich.
Ich muss das jetzt fuer ein anderes Tool machen, in dem bereits 43 Buttons existieren.
Dachte vielleicht daran, den aktivierten Button auszulesen und demnach zu handeln.
Bin fuer jede Hilfe dankbar.
Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: CommandButton wechselweise einfaerben
06.09.2018 15:57:29
Nepumuk
Hallo Torsten,
teste mal:
Private Sub CommandButton10_Click()
    Dim objOleObject As OLEObject
    For Each objOleObject In OLEObjects
        If TypeOf objOleObject.Object Is MSForms.CommandButton Then _
            objOleObject.Object.BackColor = RGB(220, 220, 220)
    Next
    CommandButton10.BackColor = vbRed
End Sub


Gruß
Nepumuk
Anzeige
AW: CommandButton wechselweise einfaerben
06.09.2018 16:03:18
Rudi
Hallo,
Sub farbe(DerButton As Object)
Dim ctl As OLEObject
For Each ctl In ActiveSheet.OLEObjects
If ctl.progID = "Forms.CommandButton.1" Then
If ctl.Name = DerButton.Name Then
ctl.Object.BackColor = RGB(255, 0, 0)
Else
ctl.Object.BackColor = RGB(220, 220, 220)
End If
End If
Next ctl
End Sub

Aufruf mit
Private Sub CommandButton1_Click()
Call farbe(CommandButton1)
End Sub
Private Sub CommandButton2_Click()
Call farbe(CommandButton2)
End Sub
Private Sub CommandButton3_Click()
Call farbe(CommandButton3)
End Sub
Private Sub CommandButton4_Click()
Call farbe(CommandButton4)
End Sub
'etc

Gruß
Rudi
Anzeige
AW: CommandButton wechselweise einfaerben
06.09.2018 16:24:22
Torsten
Vielen Dank ihr zwei,
beides funktioniert bestens. Werde aber Rudi's Variante nehmen, da hier nur eine Zeile per Button einzufuegen ist und der Rest im Modul lauft.
Schoenen Abend
;

Forumthreads zu verwandten Themen

Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige

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