Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema CommandButton
BildScreenshot zu CommandButton CommandButton-Seite mit Beispielarbeitsmappe aufrufen

Makro ohne erkennbare Einzelschritte

Betrifft: Makro ohne erkennbare Einzelschritte von: Eric
Geschrieben am: 14.09.2014 12:18:56

Hallo! Ein Arbeitsblatt enthält zwei Diagramme mit Diagrammübeschriften. Per Makro sollen die Überschriften geändert werden. Zuvor sollen beide Überschriften blinken, um auf die besvorstehende Änderung hinzuweisen. Den Code dazu habe ich. Es geht hier nur um das erkennbare Blinken der Überschriften.

Private Declare

Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)

Sub Farben_wechseln()

Dim C As Byte, X As Byte

For C = 1 To 2
For X = 1 To 20    Sheets(Worksheets.Count).ChartObjects(C).Chart.ChartTitle.Characters.Font. _
Color = RGB(255, 51, 0)
Sleep 50
Sheets(Worksheets.Count).ChartObjects(C).Chart.ChartTitle.Characters.Font.Color = RGB(0, 0, 0)
Sleep 50
Next X
Next C

End Sub
Problem: Der Code funktioniert, aber das Blinken ist bei Klick auf die Makroschaltfläche nicht zu sehen. Nur, wenn ich das Makro manuell über die F8 Taste durchführe, wechseln die Farben der Überschriften wie gewünscht.

Kann mir bitte jemand bei der Lösung des Problems helfen? Vielen Dank!

Mfg Eric

  

Betrifft: AW: Makro ohne erkennbare Einzelschritte von: Hajo_Zi
Geschrieben am: 14.09.2014 12:23:54

Hallo Eric,

vor Next X Application.Wait Now + TimeValue("00:00:01")

GrußformelHomepage


  

Betrifft: AW: Makro ohne erkennbare Einzelschritte von: {Boris}
Geschrieben am: 14.09.2014 12:25:47

Hi Eric,

nur ne schnelle Vermutung: Wie startest Du den Code? Mittels CommandButton aus dem Tabellenblatt heraus?
Dann stell mal die TakeFocusOnClick-Eigenschaft des Buttons aus FALSE.
Ist völlig ungetestet, kann daher auch Nonsens sein.

VG, Boris


  

Betrifft: AW: Makro ohne erkennbare Einzelschritte von: Eric
Geschrieben am: 14.09.2014 13:10:21

Hallo Hajo, Hallo Boris,

vielen Dank für eure schnelle Rückmeldung! Der Code wird über eine Makroschaltfläche gestartet, nicht über einen CommandButton. Der Code liegt in einem Modul, nicht in einem Tabellenblatt. Leider hat sich durch Application.Wait ... nicht viel geändert, außer daß der Code länger braucht. Aber das Blinken kann man immer noch nicht sehen. Ich habe es auch mit EnableEvents versucht, aber auch das bringt nichts. Komisch ist, daß nach demselben Prinzip eine Zelle ohne Probleme zum Blinken gebracht werden kann. Habt ihr eventuell noch eine andere Idee?

Ich danke euch vorab für eure Hilfe!

Mfg Eric


  

Betrifft: AW: Makro ohne erkennbare Einzelschritte von: Eric
Geschrieben am: 14.09.2014 13:51:37

Hallo Hajo, Hallo Boris!

Hier die Lösung.

For C = 1 To 2
For X = 1 To 10
Sheets(Worksheets.Count).ChartObjects(C).Chart. _
ChartTitle.Characters.Font.Color = RGB(255, 51, 0)
Application.Wait Now + 0.1 / 86400
Sheets(Worksheets.Count).ChartObjects(C).Chart. _
ChartTitle.Characters.Font.Color = RGB(0, 0, 0)
Application.Wait Now + 0.1 / 86400
Next X
Next C

Application.Wait von Hajo war schon nah dran. Nur
muss man es nach jedem Farbwechsel angeben. Da mir
eine Sekunde ("00:00:01") zu lange ist, habe ich
0.1 / 86400 gewählt. Das ist 1/10 Sekunde, da der
Time String ein Datum ist. 60 Sekunden mal 60 Minuten
mal 24 Stunden sind 86.400 Sekunden am Tag und davon
eben 0.1, also 1/10 Sekunde.

Nur, warum ist das so umständlich und bei Zellen
blinken lassen so einfach mit der Sleep Funktion?
Weiß jemand darauf eine Antwort? Würde mich einfach
interessieren.

Nochmals vielen Dank!

Mfg Eric