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

Aktion ausführen, wenn Mauszeiger auf Button zeigt

Forumthread: Aktion ausführen, wenn Mauszeiger auf Button zeigt

Aktion ausführen, wenn Mauszeiger auf Button zeigt
15.11.2006 09:59:00
Winfried
Hallo Freaks
kann man (wie in Access) beim nur draufzeigen mit der Maus auf einen Button schon eine Aktion ausführen lassen ? Also - nicht anklicken des Buttons, sondern ähnlich wie bei einem Kommentar nur drüber "fahren" mit der Maus !!!!
Vielen Dank im Voraus
Winfried
Anzeige

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Aktion ausführen, wenn Mauszeiger auf Button zeigt
15.11.2006 10:28:54
Heiko
Hallo Winfried,
dafür gibt es das MouseMove Ereignis:

Private Sub CommandButton1_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
MsgBox "Bin drauf !"
End Sub

Gruß Heiko
PS: Rückmeldung wäre nett !
Anzeige
AW: Aktion ausführen, wenn Mauszeiger auf Button zeigt
15.11.2006 10:29:53
Klaus
Hallo Winfried,
Probiers mal so:

Private Sub CommandButton1_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
[DeineAktion]
End Sub

Gruß,
Klaus M.vdT.
AW: Aktion ausführen, wenn Mauszeiger auf Button zeigt
15.11.2006 10:33:45
fcs
Hallo Winfried,
hier muss du das MouseMove-Ereignis einsetzen. Funktioniert mit den Buttons aus der Symbolleiste "Steuerelemente Toolbox" und mit Buttons in Userforms.

Private Sub CommandButton1_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
MsgBox "It's me! What's up buddy?"
End Sub

Gruß
Franz
Anzeige
AW: Aktion ausführen, wenn Mauszeiger auf Button zeigt
15.11.2006 11:04:53
Rudi
Hallo zusammen,
das wird aber bei jedem Zucken mit der Maus ausgeführt!
Testet mal:

Private Sub CommandButton1_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
Static i As Long
i = i + 1
Cells(i, 1) = "x"
End Sub

Gruß
Rudi
Anzeige
AW: Aktion ausführen, wenn Mauszeiger auf Button zeigt
15.11.2006 11:24:23
Winfried
Hi
vielen Dank bis hierhin - klappt auch !!!
Aber ich möchte, wenn ich den Button wieder "verlasse" die "Gegen-Aktion" ausgeführt haben. Soll heißen: wenn ich über den Button "fahre" wird ein bestimmter Rahmen um bestimmte Zellen sichtbar gemacht u n d : wenn ich dann wieder mit der Maus vom Button "wegfahre" soll der Rahmen wieder unsichtbar (visible=false) gemacht werden.
Wie könnte das denn gehen ?
Vielen Dank Winfried
Anzeige
AW: Aktion ausführen, wenn Mauszeiger auf Button zeigt
15.11.2006 11:43:20
otto
Hi,
du musst dann in die MouseMove Eigenschaft der anderen Elemente (in der Userform)den Code für ohnen Rahmen schreiben. wie das allerdings bei einem Button in einer Tabelle funktioniert weiß ich nicht.
Gruß
otto
AW: Aktion ausführen, wenn Mauszeiger auf Button zeigt
15.11.2006 14:36:26
fcs
Hallo Winfried,
könnte man dann etwa so lösen, dass die X-Y-Koordinaten der Maus auf dem Button überwacht werden. Die 5er-Werte kann man auch weglassen, allerdings ist dann die "Reaktionszone" sehr schmal und wenn man die Maus etwas schneller vom Button zieht wird das Makro nicht mehr ausgeführt.
Gruß
Franz

Private Sub CommandButton1_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
Dim Bereich As Range
Set Bereich = Me.Range("E18:F23")
With Me.CommandButton1
If X > 5 And X < .Width - 5 And Y > 5 And Y < .Height - 5 Then
With Bereich
With .Borders(xlEdgeLeft)
.LineStyle = xlContinuous
.Weight = xlThick
.ColorIndex = 3
End With
With .Borders(xlEdgeTop)
.LineStyle = xlContinuous
.Weight = xlThick
.ColorIndex = 3
End With
With .Borders(xlEdgeBottom)
.LineStyle = xlContinuous
.Weight = xlThick
.ColorIndex = 3
End With
With .Borders(xlEdgeRight)
.LineStyle = xlContinuous
.Weight = xlThick
.ColorIndex = 3
End With
End With
Else
With Bereich
With .Borders(xlEdgeLeft)
.LineStyle = xlNone
End With
With .Borders(xlEdgeTop)
.LineStyle = xlNone
End With
With .Borders(xlEdgeBottom)
.LineStyle = xlNone
End With
With .Borders(xlEdgeRight)
.LineStyle = xlNone
End With
End With
End If
End With
End Sub

Anzeige
;
Anzeige

Infobox / Tutorial

Mauszeiger-Aktionen in Excel: Buttons und deren Interaktionen nutzen


Schritt-für-Schritt-Anleitung

Um eine Aktion auszuführen, wenn der Mauszeiger über einen Button in Excel fährt, kannst du das MouseMove-Ereignis in VBA verwenden. Hier ist eine einfache Anleitung:

  1. Öffne den VBA-Editor: Drücke ALT + F11 in Excel.

  2. Füge einen Button hinzu: Gehe in die Toolbox und ziehe einen CommandButton auf dein Arbeitsblatt oder in eine Userform.

  3. Doppelklicke auf den Button: Dies öffnet das Codefenster für den Button.

  4. Füge den folgenden Code ein:

    Private Sub CommandButton1_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
       MsgBox "Maus ist über dem Button!"
    End Sub
  5. Speichere deine Arbeit: Achte darauf, die Datei als Makro-fähige Arbeitsmappe (*.xlsm) zu speichern.


Häufige Fehler und Lösungen

  • Fehler: Die Aktion wird bei jedem Mausbewegung ausgeführt.

    • Lösung: Verwende eine Static-Variable, um die Anzahl der MouseMove-Ereignisse zu zählen, oder implementiere eine Logik, die die Aktion nur einmal ausführt.
  • Fehler: Der Button funktioniert nicht in einer Tabelle.

    • Lösung: Stelle sicher, dass du die Buttons aus der Toolbox verwendest, da diese das MouseMove-Ereignis unterstützen.

Alternative Methoden

Eine alternative Methode zur Umsetzung von Mouseover-Effekten ist die Verwendung von Formeln oder bedingter Formatierung. Du kannst auch die Worksheet_SelectionChange-Ereignisse nutzen, um ähnliche Funktionen zu erreichen, jedoch wird dies nicht durch das MouseMove-Event gesteuert.


Praktische Beispiele

Hier ist ein Beispiel, das zeigt, wie du sowohl eine Aktion beim Überfahren des Buttons als auch eine Gegenaktion beim Verlassen des Buttons implementieren kannst:

Private Sub CommandButton1_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
    Dim Bereich As Range
    Set Bereich = Me.Range("E18:F23")

    If X > 5 And X < .Width - 5 And Y > 5 And Y < .Height - 5 Then
        With Bereich.Borders(xlEdgeLeft)
            .LineStyle = xlContinuous
            .Weight = xlThick
            .ColorIndex = 3
        End With
    Else
        Bereich.Borders(xlEdgeLeft).LineStyle = xlNone
    End If
End Sub

In diesem Beispiel wird ein Rahmen um die Zellen E18:F23 angezeigt, wenn der Mauszeiger über den Button bewegt wird, und der Rahmen wird entfernt, wenn der Mauszeiger den Button verlässt.


Tipps für Profis

  • Überlege, wie du die Reaktionszone des Buttons anpassen kannst, um ein besseres Benutzererlebnis zu bieten. Du kannst die X- und Y-Werte im Code anpassen, um die Empfindlichkeit zu erhöhen oder zu verringern.
  • Teste deine Makros gründlich, um sicherzustellen, dass sie in verschiedenen Situationen gut funktionieren, insbesondere bei schnellen Mausbewegungen.

FAQ: Häufige Fragen

1. Kann ich MouseMove-Ereignisse in Excel für alle Buttons verwenden?
Ja, MouseMove-Ereignisse funktionieren für Buttons aus der Steuerelemente-Toolbox und in Userforms.

2. Wie kann ich die Reaktionszone des Buttons anpassen?
Du kannst die Werte für If X > 5 And X < .Width - 5 And Y > 5 And Y < .Height - 5 im Code anpassen, um die Empfindlichkeit der Mausbewegungen zu verändern.

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