Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1940to1944
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

CommandButton-BackColor

CommandButton-BackColor
21.08.2023 22: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

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

Betreff
Datum
Anwender
Anzeige
AW: CommandButton-BackColor
21.08.2023 22: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.
CommandButton-BackColor
21.08.2023 23: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
21.08.2023 23: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
21.08.2023 22: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.

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige