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

CommandButton-BackColor

Forumthread: CommandButton-BackColor

CommandButton-BackColor
22.08.2023 00:18:30
Andreas

Hallo
mit folgenden Code wird über eine Bedingte Formatierung die Farbe des CommandButton angepasst.
Das Funktioniert.

Der Code steht in "Private Sub UserForm_Activate()"
CommandButton20.BackColor = Sheets("Auswertung").Range("AH7").DisplayFormat.Interior.Color


Eine Änderung erfolgt jedoch nur bei Neustart des UserForm.

Ist es möglich, die Ändung der Farbe sofort zu übernehmen-ohne und Schließen und Öffnen?

Was müsste geändert werden?

LG Andreas
Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: CommandButton-BackColor
22.08.2023 00:39:04
onur
"Ist es möglich, die Ändung der Farbe sofort zu übernehmen-ohne und Schließen und Öffnen? "?
Du meinst, "sobald sich die Farbe der Zelle ändert" ?
Nein.
Da müsstest du schon sozusagen über VBA eine eigene bedingte Formatierung für das Button schreiben, und zwar, indem du im Change-Event die Zelle überprüfst und dementsprechend das Button färbst.
Anzeige
CommandButton-BackColor
22.08.2023 01:44:16
volti
Hallo Andreas,

falls Du es doch unbedingt brauchen solltest, könntest Du es mit einem Timer probieren.
Hier ein Beispiel:

In ein Modul:
Sub Test()

UserForm1.Show (modal)
End Sub

Sub TimerProc()
UserForm1.CommandButton20.BackColor = Sheets("Auswertung").Range("AH7").DisplayFormat.Interior.Color
End Sub


In das UF-Modul:
Private Declare PtrSafe Function SetTimer Lib "user32" ( _

ByVal hwnd As LongPtr, ByVal nIDEvent As LongPtr, _
ByVal uElapse As Long, ByVal lpTimerFunc As LongPtr) As LongPtr
Private Declare PtrSafe Function KillTimer Lib "user32" ( _
ByVal hwnd As LongPtr, _
ByVal nIDEvent As LongPtr) As Long
Private mhTimer As LongPtr

Sub Userform_Activate()
If mhTimer = 0 Then mhTimer = SetTimer(0&, 0&, 100, AddressOf TimerProc)
End Sub

Private Sub UserForm_Terminate()
If mhTimer > 0 Then KillTimer 0&, mhTimer: mhTimer = 0 ' Timer löschen
End Sub


Gruß
Karl-Heinz
Anzeige
CommandButton-BackColor
22.08.2023 01:58:38
Daniel
Hi

Das hängt davon ab, wodurch der Wert dieser Zelle geändert wird,während die Userform geändert wird.

Wenn es in der Userform einen Befehl gibt, der diesen Zellwert ändert, dann musst du den Befehl zum Umfärben des Buttons danach ausführen und ggf ein Me.Repaint nachschieben, damit diese Formatierungsänderung sofort übernommen wird und nicht später irgendwann.

Wenn es kein spezielles Makro gibt, dann muss der Code in ein Eventmakro, dass durch die Zellwertänderun in der Zelle ausgelöst wird (Dh Change- oder Calculate-Event des Tabellenblatts, Change, wenn Konstante in der Zelle, Calculate, wenn Formel in der Zelle.)

Gruß Daniel
Anzeige
CommandButton-BackColor
22.08.2023 00:57:59
Andreas
OK onur,

Dann werde ich für den Bereich der entsprechenden CommandButtons ein separates Userform anlegen, und wenn dieses aktiviert wird, ändert sich die Farbe dementsprechend beim Start.
Das reicht für diese Anwendung. Somit kann die erste Userform geöffnet bleiben.
Danke schön.

Anzeige
Anzeige
Anzeige
Live-Forum - Die aktuellen Beiträge
Datum
Titel
14.05.2026 13:31:09
14.05.2026 09:50:42
13.05.2026 19:14:18