Live-Forum - Die aktuellen Beiträge
Datum
Titel
17.10.2025 10:28:49
16.10.2025 17:40:39
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Button Hover Effekt

Button Hover Effekt
25.07.2021 13:07:42
Flo
Liebe Community, ich bin Mal wieder ratlos...
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
Anzeige

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Button Hover Effekt
25.07.2021 16:13:15
Flo
Vielen Dank für den Link, das Video habe ich vorab auch schon gefunden.
Gute Idee, nur wenn ich die selbe Logik auf CommandButtons anwende, dann flackert der Button in den unterschiedlichen Farben, so lange sich die Maus innerhalb des Buttons bewegt.
Anzeige
AW: Button Hover Effekt
25.07.2021 16:18:57
ralf_b
naja warum muß es ein Commandbutton sein? Der limitiert doch dein Ansinnen. Für einen Click geht jedes Shape.
AW: Button Hover Effekt
25.07.2021 16:24:07
Flo
Gute Frage ;)
Zum einen sieht ein CommandButton eben aus, wie ein Button und hat vor allem auch die entsprechende optische Änderung beim Klicken bereits eingebaut. Bei Shapes müsste ich dann auch noch ein 3. Shape erstellen, sodass der Mausklick optisch repräsentiert.
Außerdem baue ich ein komplexeres Programm, weshalb ich gerne die altbekannten CommandButtons verwenden würde. So kann ich auch einfacher unterschieden, ob etwas ein Bild, eine TextBox, ein Button oder sonst etwas ist...
LG Flo
Anzeige
AW: Button Hover Effekt
25.07.2021 16:31:25
Flo
Wobei es bei anderen Shapes ebenso zum flackern kommen würde, da ja jede Mausbewegung das Event auslöst und nich nur, wenn die Maus das Shape "betritt".
AW: Button Hover Effekt
25.07.2021 16:37:51
ralf_b
Wenn du dir Kopfzerbrechen sparen willst, dann lieber es so nehmen wie es ist. Ein Umstricken, um special Effects zu realisieren, führt unweigerlich zu Klassenprogrammierung und API-Funktionen.
Anzeige
AW: Button Hover Effekt
25.07.2021 16:44:00
Flo
Als Klasse lasse ich meine Buttons ohnehin laufen. Wollte den ursprünglichen Post nicht noch komplizierter machen.
Von API-Funktionen habe ich noch nie gehört. Kannst du mich da in irgendeine Richtung weisen?
Hier das Klassenmodul:

Option Explicit
Private WithEvents MyCmdbtn As MSForms.CommandButton
'# aktueller Commandbutton wird in MyCmdbtn geschrieben
Public Property Set control(cmdbtn As MSForms.CommandButton)
Set MyCmdbtn = cmdbtn
End Property
'# Aktion bei Klick auf Commandbutton
Private Sub MyCmdbtn_Click()
Debug.Print "Hier bin ich"
End Sub
'# Aktion bei MouseOver
Private Sub MyCmdbtn_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal x As Single, ByVal y As Single)
If Maus_ueber_Button = False Then
MyCmdbtn.BackColor = vbGreen
Maus_ueber_Button = True
ActiveSheet.Label1.Visible = True
MyCmdbtn.BringToFront
Set letzter_cmdButton = MyCmdbtn
End If
End Sub

Anzeige
bei API und Klassen bin ich leider raus. owT
25.07.2021 16:47:16
ralf_b
Besser wird es nicht
26.07.2021 11:30:46
Yal
Sorry, Flo,
aber Du muss Dich abfinden, dass Du mit VBA in Excel und nicht mit Core-Prozess-nähem C-Programmierung unterwegs bist.
Was zu beschleunigen wäre, ist die Reaktionszeit der Anzeige unter Excel. Da hat keine Werkzeug darauf Zugriff, weil Excel dazwischen steht.
Höchstens könntest Du alle Excel-Mechanismen ausschalten, die dazu führen, dass Excel zuerst was anderes erledigen muss, bevor es sich die Anzeige-Aktualisierung widmet, aber ob es ein spürbare Beschleunigung bringt, ist nicht mal sicher.
VG
Yal
Anzeige
AW: Besser wird es nicht
01.08.2021 20:18:23
Flo
Hi Yal, noch vielen dank für deine Antwort!
Für alle, die zukünftig über diesen Forumseintrag stolpern... Ich habe eine Lösung gefunden:
Label über den ganzen Bildschirm ziehen und zwei Buttons über einander legen.
Wenn die Maus in den Layover-Button "betritt", verschwindet (visible=False) dieser und gibt somit den tatsächlichen Button frei. Wenn die Maus dann wieder die Buttons verlässt und somit das Label betritt, wird der Layover-Button wieder sichtbar gemacht. Natürlich muss darauf geachtet werden, dass das Label in der Vordergrund bzw. Hintergrund gerückt wird...
Diese Technik funktioniert super ohne zeitlichen delay.
Beste Grüße, Flo
Anzeige
;

Forumthreads zu verwandten Themen

Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Button Hover Effekt in Excel erstellen


Schritt-für-Schritt-Anleitung

Um einen Button Hover Effekt in Excel zu erstellen, kannst du die folgenden Schritte befolgen. Diese Anleitung ist speziell für die Verwendung von CommandButtons in Excel VBA gedacht.

  1. CommandButton erstellen: Füge einen CommandButton auf deinem Arbeitsblatt hinzu.

  2. Label erstellen: Erstelle ein transparentes Label, das über das gesamte Arbeitsblatt gezogen wird. Dies dient dazu, den Mouse-Over Effekt zu erkennen.

  3. VBA-Code einfügen: Öffne den VBA-Editor (ALT + F11) und füge den folgenden Code in das Modul ein:

    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
  4. Optimierung: Achte darauf, dass du die Excel-Mechanismen für die Bildschirmaktualisierung minimierst, um Verzögerungen zu vermeiden. Verwende Application.ScreenUpdating = False am Anfang deines Codes und setze es am Ende wieder auf True.


Häufige Fehler und Lösungen

  1. Flackern des Buttons: Wenn der Button beim Mouseover flackert, kann das an zu vielen MouseMove-Ereignissen liegen. Eine Möglichkeit ist, nur einen MouseMove-Ereignis-Handler zu verwenden.

  2. Verzögerung bei der Farbänderung: Wenn die Aktualisierung zu langsam ist, überprüfe, ob andere Excel-Prozesse die Performance beeinträchtigen. Minimiere die Anzahl der Berechnungen während der Mouseover-Ereignisse.

  3. Das Label wird nicht angezeigt: Stelle sicher, dass das Label korrekt positioniert ist und die Sichtbarkeit richtig gesteuert wird.


Alternative Methoden

Anstelle von CommandButtons kannst du auch Shapes verwenden. Shapes bieten eine größere Flexibilität und können ebenfalls mit der Mouseover-Funktionalität ausgestattet werden. Hier ist ein Beispiel:

  1. Shape erstellen: Füge ein Shape (z.B. ein Rechteck) in dein Arbeitsblatt ein.
  2. VBA-Code anpassen: Verwende ähnliche MouseMove-Events wie oben, um die Farbe des Shapes bei Mouseover zu ändern.

Praktische Beispiele

Hier ist ein einfaches Beispiel für einen Mouseover-Effekt mit Shapes:

Private Sub Shape1_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal x As Single, ByVal y As Single)
    Shape1.Fill.ForeColor.RGB = RGB(0, 255, 0) ' Setze die Farbe auf grün
End Sub

Private Sub Shape1_MouseLeave()
    Shape1.Fill.ForeColor.RGB = RGB(255, 0, 0) ' Setze die Farbe auf rot zurück
End Sub

Mit diesem Code kannst du den Hover Effekt für Shapes in Excel umsetzen.


Tipps für Profis

  • Verwendung von API-Funktionen: Wenn du mehr Kontrolle über das Mouseover-Verhalten benötigst, kannst du API-Funktionen in VBA nutzen, um die Performance zu optimieren. Dies erfordert jedoch fortgeschrittene Kenntnisse in VBA.
  • Optische Effekte kombinieren: Du kannst die Hover-Effekte mit weiteren visuellen Effekten kombinieren, z.B. durch das Einblenden weiterer Objekte oder das Ändern von Text in Labels (excel hover text).
  • Debugging: Nutze Debug.Print um zu überprüfen, ob die Events wie gewünscht ausgelöst werden.

FAQ: Häufige Fragen

1. Wie kann ich die Farbe des Buttons beim Hover ändern?
Du kannst die BackColor-Eigenschaft des CommandButtons in deinem MouseMove-Event ändern.

2. Warum flackert mein Button beim Hover?
Das Flackern tritt häufig auf, wenn die MouseMove-Ereignisse zu schnell hintereinander ausgelöst werden. Reduziere die Anzahl der Events oder verwende ein Overlay-Label.

3. Ist es besser, Shapes oder CommandButtons zu verwenden?
Das hängt von deinen Anforderungen ab. Shapes bieten mehr Flexibilität und sind oft einfacher zu handhaben, während CommandButtons eine standardisierte Optik haben.

4. Kann ich den Hover Effekt auch ohne VBA umsetzen?
Leider sind die Hover-Effekte in Excel ohne VBA nur eingeschränkt möglich. VBA bietet die besten Möglichkeiten zur Anpassung.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige