Mein Ziel ist es für CommandButtons auf dem Arbeitsblatt (nicht UserForm!) einen Mouse-Over Effekt zu erzielen, bei dem sich die Farbe des Buttons ändert, wenn sich die Maus darüber befindet.
Meine bisherige Herangehensweise lautet wie folgt:
- Durchsichtiges Label über das gesamte Arbeitsblatt erstellen
- Mittels CommandButton1_MouseMove die Farbe zu ersten Mal zu ändern
- Mittels Label1_MouseMove die Farbe wieder zurücksetzen
Public letzter_cmdButton As Object
Public Maus_ueber_Button As Boolean
Private Sub CommandButton1_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal x As Single, ByVal y As Single)
If Maus_ueber_Button = False Then
CommandButton1.BackColor = vbGreen
Maus_ueber_Button = True
ActiveSheet.Label1.Visible = True
CommandButton1.BringToFront
Set letzter_cmdButton = CommandButton1
End If
End Sub
Private Sub Label1_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal x As Single, ByVal y As Single)
If Maus_ueber_Button = True Then
letzter_cmdButton.BackColor = vbBlue
Label1.Visible = False
Maus_ueber_Button = False
End If
End Sub
Problem:Die Aktualisierung hängt immer einige hundertstel Sekunden hinterher. Es fällt auf, wie der Lag in einem Spiel.
Was ich versucht habe:
- DoEvents einbauen
- Loop und sleep, sodass DoEvents genug Zeit zum ausführen hat
- Application.ScreenUpdating = True
- ActiveSheet.Calculate
- ActiveWindow.SmallScroll
- Application.WindowState = Application.WindowState
Ich bin mit meinem Latein am Ende und für alle Vorschläge offen.
Hoffentlich konnte ich mein Problem verständlich darlegen. Vielen Dank vorab!
mfg, Flo