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

VBA Farbeänderung bei Schaltflächen werden nicht angezeigt

Forumthread: VBA Farbeänderung bei Schaltflächen werden nicht angezeigt

VBA Farbeänderung bei Schaltflächen werden nicht angezeigt
12.06.2025 12:30:22
Joschi Witchcraft
Hallo Forum.

Ich nutze auf einem Tabellenblatt Schaltflächen welche als Shapes erstellt wurden.

Nun möchte ich beim Start einer zugewiesenen Funktion die Farbe der Schaltfläche auf gelb setzen

Das Problem: den Farbwechsel sieht man nur, wenn man z. B. einen "Stop" einbaut.

Aktuelle Befehle nach der Farbänderungen:

OldUpdate = Application.ScreenUpdating
With Application.FileDialog(msoFileDialogFilePicker)
....
Result = .Show
End With
Application.ScreenUpdating = False

Beim ".Show" wird noch immer die ursprüngliche Farbe angezeigt

Nach erfolgreichem Durchlauf wird die Farbe auf grün geändert, bei Fehlern auf rot.

Was läuft hier falsch?

Gruß Joschi

Anzeige
AW: VBA Farbeänderung bei Schaltflächen werden nicht angezeigt
12.06.2025 14:04:13
daniel
Hi
naja, bei dem Kurzen Ausschnitt den du zeigst, wie soll man da beurteilen, was du falsch machst?
wenn es um Farbwechsel geht, dann müsste man ja erkennen, wann du den Farbwechsel machst und wie deine Einstellungen (Screenupdating usw) sind.
im idealfall ist der Code den du zeigst so umfangreich, dass man man ihn kopieren und in den Editor einfügen kann und er dann direkt lauffähig ist, damit das ganze selber ausprobieren kann.
Rein theoretische Fehlerdiagnose und das finden der zielführenden Lösung ist viel schwieriger, als wenn man selber am Problem rumdoktoren kann.
Gruß Daniel
Anzeige
AW: VBA Farbeänderung bei Schaltflächen werden nicht angezeigt
12.06.2025 16:53:13
Ulf
Hi,
so kann man das umgehen
Public Sub kawa()

Dim s As Shape
Dim res
Dim dlg As FileDialog 'Dialog
Set dlg = Application.FileDialog(msoFileDialogFilePicker) '.Dialogs(msoFileDialogFilePicker) 'xlDialogOpen)
Set s = ThisWorkbook.Worksheets(1).Shapes(1)
s.Fill.ForeColor.RGB = vbYellow
s.Parent.Activate
With dlg
res = .Show
End With
s.Fill.ForeColor.RGB = vbBlue
End Sub

hth
Ulf
Anzeige
AW: VBA Farbeänderung bei Schaltflächen werden nicht angezeigt
12.06.2025 19:14:59
Joschi Witchcraft
Hallo Daniel, hallo Ulf.

Danke. Das Problem ist gelöst.

Gerade als ich einen Testcode fertiggestellt hatte, kam die Antwort von Ulf. Eigentlich war in seinem Code fast nichts neues enthalten, was nicht auch in meinem Basiscode enthalten ist - wenn auch in andere Schreibweise. Fast: eine Zeile war mir neu: s.Parent.Activate

Nachdem ich diesen Befehl zum Kommentar machte, verhielt sich der Code von Ulf wie mein bisheriger Code: der Farbwechsel wurde nicht angezeigt.

Inzwischen weiß ich: nach der Farbänderung muss für das Tabellenblatt ein "Activate" durchgeführt werden.

Ich werde diesen Befehl nun in meine Basis-Version übernehmen. Allerdings dürfte es ratsam ein, die Events kurzfristig zu deaktivieren.

Gruß Joschi
Anzeige
AW: VBA Farbeänderung bei Schaltflächen werden nicht angezeigt
13.06.2025 11:00:23
Daniel
Dann teste mal meinen Vorschlag
Application.ScreenUpdating = True löst keine Events aus, dh diese müssen dann nicht abgeschaltet werden.
AW: VBA Farbeänderung bei Schaltflächen werden nicht angezeigt
12.06.2025 18:20:00
daniel
Hi
wenn du im Makro eine Shapefarbe änderst und diese Änderung sofort, dh noch während des Makrolaufs, angezeigt werden soll, dann musst du den Befehl Application.ScreenUpadating = True ausführen.

normalerweise zeigt Excel solche Änderungen erst nach Ende des Makros an, dieser Befehl setzt die Änderung sofort um.

kannst du mit diesem Makro testen, vorher einfach ein Rechteck zeichnen, die Farbe sollte nicht rot sein:

Sub Makro1()

'
Dim x As Long
With ActiveSheet.Shapes(1).Fill
x = .ForeColor.RGB
.ForeColor.RGB = vbRed
Application.ScreenUpdating = True
MsgBox "Hallo"
.ForeColor.RGB = x
End With

End Sub


Wenn du das Application.ScreenUpdating = True löschst oder auskommentierst, dann wird dir der Farbwechsel nicht mehr angezeigt.

Gruß Daniel
Anzeige
AW: VBA Farbeänderung bei Schaltflächen werden nicht angezeigt
13.06.2025 11:06:31
Joschi Witchcraft
Danke Daniel; ist bekannt.

Gruß Joschi
AW: VBA Farbeänderung bei Schaltflächen werden nicht angezeigt
13.06.2025 14:47:40
daniel
wenn es bekannt ist, warum fragst du dann?
AW: VBA Farbeänderung bei Schaltflächen werden nicht angezeigt
13.06.2025 15:42:10
Joschi Witchcraft
Hallo Daniel.

In meiner Fragestellung war klar zu sehen, dass ScreenUpdating erst nach dem ".Show" gesetzt wurde. Das Problem lag an einer anderen Stelle, und nicht am ScreenUpdating.
Anzeige
AW: VBA Farbeänderung bei Schaltflächen werden nicht angezeigt
13.06.2025 15:48:19
daniel
das .ScreenUpdating = True führt dazu, dass die Farbänderung des Shapes sofort sichtbar wird, wenn dieser Befehl ausgeführt wird.
du musst ihn also direkt nach dem Zuweisen der neuen Farbe ausführen, wenn diese noch während dem Makrolauf sichtbar sein soll und nicht erst am Ende.
es ist wichtig, dass dieser Befehl ausgeführt wird. Nur dass das ScreenUpdating = true der aktuelle Wert ist, reicht nicht.
das ScreenUpdating = True hat den Vorteil, dass es keine Events auslöst und auch sonst nichts verändert.

Gruß Daniel
Anzeige
AW: VBA Farbeänderung bei Schaltflächen werden nicht angezeigt
14.06.2025 20:26:51
Joschi Witchcraft
Hallo Daniel.

Heute hatte ich Zeit, mich mit Deinem Vorschlag zu beschäftigen.

Die eigentliche Änderung der Farbe mache ich in der Funktion, mit der auch neue Schaltflächen erstellt werden.

Dort, wo ich die Farbändrung "anstoße", möchte ich keine zusätzlichen Befehle, die mit der Farbänderung zusammenhängen.

Ich habe mir eine Testumgebung eingerichtet. Der einzige Shape ruft die Funktion "Shapetest" auf. Code: https://www.herber.de/bbs/user/177769.txt

Nach mehreren Tests glaube ich, nun die endgültige Version gefunden zu haben. Alle erforderlichen Schritte zur Aktualisierung passieren außerhalb der Funkiton, welche den Anstoß gegeben hat. Und zum Beginn dieser Funktion wird "Application.ScreenUpdating = False" gesetzt. Mit "Msgbox" wird die Verarbeitung gestoppt. Nun ist sichtbar, ob die Farbänderung funktioniert hat.

Den Vorschlag von Ulf habe ich wieder ausgebaut, zumal er nicht immer funktioniert hat.

Gruß Joschi

Anzeige
AW: VBA Farbeänderung bei Schaltflächen werden nicht angezeigt
15.06.2025 10:39:30
Joschi Witchcraft
Hallo Forum.

Jetzt habe ich doch noch ein Problem.

Es immer toll, wenn ein Code in einer Testumgebung funktioniert, aber beim Einsatz in einer bestehenden Anwendung nicht mehr. Genau dies trifft auf meinen Code-Vorschlag zu. Grund: bei dem aktiven Blatt sind ein Paar Zeilen oben fixiert. Das hat zur Folge, dass die Befehle
ActiveWindow.SmallScroll down:=1
ActiveWindow.SmallScroll up:=1

nicht ausgeführt werden können.

Wenn ich die Fixierung aufhebe, dann ist das Problem gelöst. Doch dann müsste ich die Fixierung anschließend wieder herstellen; ich müsste dazu zuvor die Werte ermitteln.

Wer hat eine gute Idee?

Gruß Joschi
Anzeige

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige