Es wäre nett, wenn die Grundfarbe nach verlassen des Feldes (CommandButton)
automatisch zurückkommen würde.
Danke für Euere Hilfe
Zsolt
hallo Zsolt,
falls der Commandbutton auf einem Userform ist,
schreib eine
Private Sub UserForm_MouseMove(ByVal Button As Integer, _
ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
CommandButton3.BackColor = (FarbedeinerWahl)
End Sub
mfG
--
E-Mail von Martin Worm, Karlsruhe, Deutschland
benutze Excel2000(9.0.2812) Win ME
Antworten bitte nur in die Newsgroup
danke für den Versuch, aber leider hat es nichts gebracht... :-(
Der Commandbutton ist nicht auf einem Userform.
Wenn ich den Befehl eingebe, ändert sich zwar die Farbe des Buttons, aber
die ändert sich nicht zurück, wenn ich mit der Maus nicht mehr auf dem
Button bin.
Ich will, dass sich die Farbe nur dann ändert wenn ich mit der Maus über den
Button fahre und sobald ich den Button verlasse, habe ich wieder die
ursprüngliche Farbe.
Grüße aus Freiburg
"Martin Worm" <marti...@despammed.com> schrieb im Newsbeitrag
news:m09jq0ho8u1td72j2...@4ax.com...
hallo Zsolt,
>danke für den Versuch, aber leider hat es nichts gebracht... :-(
>Der Commandbutton ist nicht auf einem Userform.
falls du verrätst, wo der Commandbutton ist, wird dir vielleicht
jemand helfen. :-(
Ich hab den geposteten Code mal probiert um zu gucken, obs geht ;-)
mfg
MfG Frank
_____________________________________________
Frank Arendt-Theilen, Microsoft MVP für Excel, Hameln
Website: http://www.xl-faq.de; Auftragsprogrammierung
Hi Martin,
was du mir geschickt hast, hat wunderbar auf einem Userform funktioniert.
vielen Dank!!!!
Der Commandbutton ist auf einem Tabellenblatt.
auf einer ganz normelen Excelseite mit Zeilen und Spalten im Hintergrund.
=EINBETTEN("Forms.CommandButton.1";"")
Zsolt aus Freiburg
"Martin Worm" <marti...@despammed.com> schrieb im Newsbeitrag
news:maijq0d7pqck9sp6b...@4ax.com...
"Zsolt Kiss" schrieb:
> Hi Martin,
> was du mir geschickt hast, hat wunderbar auf einem Userform
> funktioniert. vielen Dank!!!!
> Der Commandbutton ist auf einem Tabellenblatt.
> auf einer ganz normelen Excelseite mit Zeilen und Spalten im
> Hintergrund. =EINBETTEN("Forms.CommandButton.1";"")
dann musst du etwas tricksen.
Bevor du den Commandbutton einfügt, muss wegen der Reihenfolge auf dem
Tabellenblatt ein Bild-Steuerelement (in diesem Beispiel mit dem Namen
imgMouseOver) vorhanden sein. In den Eigenschaften stellt du den
BackStyle auf Transparent und den BorderStyle auf None.
Nun brauchst du zwei MouseMove-Prozeduren, einmal von dem anschließend
hinzugefügten CommandButton und zum Anderen von dem Bild-Steuerelement:
Private Sub cmdButton_MouseMove( _
ByVal Button As Integer, _
ByVal Shift As Integer, _
ByVal X As Single, _
ByVal Y As Single)
If cmdButton.BackColor <> vbRed Then
With imgMouseOver
.Left = 0
.Top = 0
.Width = ActiveWindow.Width
.Height = ActiveWindow.Height
End With
cmdButton.BackColor = vbRed
End If
End Sub
Private Sub imgMouseOver_MouseMove( _
ByVal Button As Integer, _
ByVal Shift As Integer, _
ByVal X As Single, _
ByVal Y As Single)
With imgMouseOver
.Left = -100
.Top = -100
.Width = 10
.Height = 10
End With
cmdButton.BackColor = vbBlue
End Sub
MfG
Michael
--
-------------------------------------------
Michael Schwimmer
Home : http://michael-schwimmer.de
Es funktioniert wunderbar!!!
vielen Dank für die Hilfe
Schönes Wochenende noch
Zsolt
ich komm aus Ungarn, daher ist der komischer Name
<Frank Arendt-Theilen> schrieb im Newsbeitrag
news:chijq0dn8himhga9v...@4ax.com...
Arendt-Theilen schrieb:
> Hallo Zsolt Kiss?,
> wie folgt:
> Private Sub CommandButton1_MouseMove(ByVal Button As Integer, _
> ByVal Shift As Integer, _
> ByVal X As Single, _
> ByVal Y As Single)
> Const intABSTAND As Integer = 3
> If (X >= intABSTAND And Y >= intABSTAND) And _
> (X <= CommandButton1.Width - intABSTAND And _
> Y <= CommandButton1.Height - intABSTAND) Then
> CommandButton1.BackColor = &HFF8080
> Else
> CommandButton1.BackColor = &H8000000F
> End If
> End Sub
das funzt aber nur zuverlässig, wenn du gaaanz langsam die Maus bewegst.
Bei schnellen Bewegungen werden nicht alle Ereignisse abgearbeitet und
die Ereignisse mit den Relevanten X- bzw. Y-Positionen können
ausbleiben.
Arendt-Theilen schrieb:
> Hallo Michael,
> ja, das ist leider so!
> Deine Prozedur finde ich toll, dein Einwand bleibt aber auch bei
> deinen Prozeduren bestehen, schade!
leider muss das Ereignis des Bild-Steuerelementes auch ausgelöst werden,
um ein MouseOver zu simulieren. Du verlässt dich aber auf ein paar Pixel
am Rand, während bei mir der Rest des ActiveWindow überwacht wird.
Dieses Ereignis ist aber immer noch wahrscheinlicher, als sich auf das
MouseMove-Ereignis des Buttonrandes zu verlassen.
Ich habe auch probiert, mit SetCapture und einer Listbox (mit einem
Steuerelement, das noch ein Fensterhandle besitzt) als Empfänger zu
arbeiten, das ist aber voll in die Hose gegangen.
Du hast natürlich recht, wenn sich der Button beispielsweise ganz links
befindet, kann ein MouseMove des Bild-Steuerelements nicht ausgelöst
werden, wenn man die Maus nach links bewegt. Aber sobald man sich
irgendwo wieder auf dem ActiveWindow befindet, ist wieder das Ereignis
da, und ändert die Farbe.
Wenn dem OP natürlich deine Lösung reicht, stimme ich dir voll zu. Immer
mit dem geringsten Aufwand!