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

Mouseover, Problem mit Farbwechsel

Forumthread: Mouseover, Problem mit Farbwechsel

Mouseover, Problem mit Farbwechsel
07.06.2024 08:29:28
khenschel
Hallo,

ich habe vor einige Schaltflächen in einer Tabelle mit einem Mouseovereffekt zu versehen.
Um den Farbwechsel beim mouseover zu realisieren, habe ich als Beispiel und zum testen zwei commandbuttons benutzt und hinter die Schaltfläche unten rechts gelegt (siehe Datei).
Das funktioniert grundsätzlich, aber leider unzuverlässig ... manchmal passiert nichts, wenn ich mit der Maus auf die Schaltfläche fahre und manchmal bleibt sie an, wenn ich die Maus wieder von der Schaltfläche wegziehe.
Gibt es eine Lösung, dass es immer zuverlässig beim mouseover funktioniert?

Ich bin leider kein Profi und bin jetzt ratlos. Vielleicht kann mir jemand helfen?

Gruß
Klaus

Beispiel:

https://www.herber.de/bbs/user/169899.xlsm

Anzeige

14
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Mouseover, Problem mit Farbwechsel
07.06.2024 09:31:41
daniel
Hi
da gibt es leider nichts zuverlässiges.
ein Problem ist, dass du dich mit der Maus so schnell bewegen kannst, dass das MouseMove nicht jede X- und Y-Veränderung erfasst, dh wenn die Reaktionsflächen nur klein sind, kann es daher sein, dass eine Bewegung über ein Objekt nicht erkannt wird.
eigentlich hilft da nur, die Flächen größer machen.

du könntest, wenn dein Button ein schönes Bild sein soll, auch das ActiveX-Control Image verwenden.
Dort hättest du wieder ein MouseMove, so dass du den Rahmen C1 auch dann grün färben könntest wenn du dich über dem Button selbst bewegst, dann wäre deine Reaktionsfläche größer und das ganze würde zuverlässiger funktionieren.

Gruß Daniel
Anzeige
AW: Mouseover, Problem mit Farbwechsel
07.06.2024 11:12:29
khenschel
Hallo Daniel,
danke für deine Ideen.

Du schreibst:
du könntest, wenn dein Button ein schönes Bild sein soll, auch das ActiveX-Control Image verwenden.
Dort hättest du wieder ein MouseMove, so dass du den Rahmen C1 auch dann grün färben könntest wenn du dich über dem Button selbst bewegst, dann wäre deine Reaktionsfläche größer und das ganze würde zuverlässiger funktionieren.


Also ActiveX-Control Image habe ich hinbekommen. Aber wie deklariere ich da die Mouseover-Funktion, in Verbindung mit dem Rahmen ..? Also ich meine, dass sich der Rahmen z.B. grün färbt, wenn ich mit der Maus auf das ActiveX-Control Image fahre?

Gruß
Klaus
Anzeige
AW: Mouseover, Problem mit Farbwechsel
07.06.2024 11:38:12
daniel
den Rahmen machst du wie bisher, mit dem Button C1.
du verwendest halt zusätzlich das MouseMove des eigentlichen Buttons, um den Rahmen (C1) Grün zu färben, dies deckt dann den Fall ab, dass du zu schnell über das Rahmensteuerelement fährst und dessen MouseMove nicht auslöst.
AW: Mouseover, Problem mit Farbwechsel
07.06.2024 12:00:03
khenschel
Hi Daniel,
danke, das hatte ich auch so verstanden ;), aber ich weiß nicht wie das gemacht wird. Ich kenne mich mit VBA nicht gut aus ...

So sieht der derzeitige Code aus (nachdem ich ein ActiveX-Control Image erzeugt habe), also der letzte Absatz Private Sub Image1_ .... wurde hinzugefügt):

Private Sub C1_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
Tabelle1.C1.BackColor = RGB(0, 255, 0)
End Sub

Private Sub C2_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
Tabelle1.C1.BackColor = RGB(227, 227, 230)
End Sub

Private Sub Image1_BeforeDragOver(ByVal Cancel As MSForms.ReturnBoolean, ByVal Data As MSForms.DataObject, ByVal X As Single, ByVal Y As Single, ByVal DragState As MSForms.fmDragState, ByVal Effect As MSForms.ReturnEffect, ByVal Shift As Integer)
' Implementation goes here
End Sub


So funktioniert es aber nicht, bzw. genauso schlecht wie vorher. Und was ganz wichtig ist: Ich möchte eine Aktion auslösen, wenn ich auf das ActiveX Image klicke (also z.B. eine App starten, eine pdf anzeigfen lassen, etc.). Wie kann ich das ermöglichen?

Gruß
Klaus
Anzeige
AW: Mouseover, Problem mit Farbwechsel
07.06.2024 12:26:15
daniel
naja, die Codes, die du schon hast, sind doch auch nicht vom Himmel gefallen, die hast du doch auch irgendwie geschrieben.

außerdem, du benutzt bei den Steuerelementen, die du schon hast, das Event MouseMove, um beim drüberfahren mit der Maus die Farbe des Rahmens (C1) zu ändern.
wäre es dann nicht logisch, auch für das neue Steuerelement das selbe Event zu verwenden?
welcher Gedankengang hat dich dazu veranlasst, hier jetzt auf BeforeDragOver zu wechseln?
(kleiner Tipp am Rande, die zur Verfügung stehenden Events werden in der Combobox aufgelistet, die sich rechts über dem Codefenster des Editors befindet. in der Linken Combobox steht das Steuerelement, für das du gerade Code schreibst.

und ja, das Image-Control hat kein Click-Event. Man kann aber alternativ auch MouseUp verwenden, das ist quasi das Event, wenn du den MausButton wieder losläst.

als Alternative kannst du aber auch einem normalen ActiveX-Button ein Bild zuweisen (Entwurfsmodus aktiveren, kontextmenü des Buttons öffnen (rechte Maustaste) und die Eigenschaften anzeigen lassen, dort kannst du dann bei "Picture" das Bild auswählen, das im Button angezeigt wird). Für die normalen Buttons hast du ja schon was programmiert, daher sollte dir das dann leichter fallen als für ein neues Event.

Gruß Daniel
Anzeige
AW: Mouseover, Problem mit Farbwechsel
07.06.2024 13:22:34
khenschel
ich habe c1 und c2 selbst geschrieben. Das darunter eben nicht. Das wurde automatisch unter meinen Code geschrieben, nachdem ich das ActiveX-Control Image erzeugt hatte ...
sorry, ich blicke nicht mehr durch. Aber ich möchte dich auch nicht nerven :) ...
Danke für deine Erklärungen.

Gruß
Klaus
Anzeige
AW: Mouseover, Problem mit Farbwechsel
07.06.2024 13:36:43
daniel
wie gesagt.
vergiss das Imagecontrol.
nimm als Button das gleiche Element wie für C1 und C2.
du kannst dann auch den gleichen Code verwenden um C1 beim MouseMove über den Button grün zu färben.

wenn ein Bild anstelle des Buttons angezeigt werden soll, kannst du das über die Eigenschaftsliste auch einfügen.

Gruß Daniel
Anzeige
AW: Mouseover, Problem mit Farbwechsel
07.06.2024 09:47:26
volti
Hallo Klaus,

da ist ein zeitliches Problem drauf. Wenn man ganz langsam die Maus bewegt wird beim Überfahren des Rahmens dieser grün und beim Überfahren des darunter liegenden Shapes der Rahmen wieder grau. Das Überfahren außerhalb dieser beiden Objekte lässt den momentanen Status unverändert.
Bei schnellen Mausbewegungen wird wegen des schmalen Rahmens das Überfahren nicht erkannt => es tut sich nichts. Im Worstcase reicht es zeitlich auch nicht, das darunterliegende Shape zu erkennen.
Eine Maßnahme wäre, den Innenbutton auch mit Mousemove zu versehen. Ist mir allerdings in einer kurzen Testzeit noch nicht gelungen.

Ansonsten müsste z.B. mit Timer gearbeitet werden. Dieser wird bei Eintritt in den Rahmen und in den Innenbutton getriggert und nach einer gewissen Zeit wieder ausgeschaltet.

Hier mal ein Beispiel dazu:
https://www.clever-excel-forum.de/Thread-Tooltips-fuer-Active-X-Controls-auf-Tabellenblaetter

Gruß
Karl-Heinz
Anzeige
schade :-/
07.06.2024 19:50:48
Oberschlumpf
Hi,

weder hier, noch im anderen Forum hast du erwähnt, dass du in mehreren Foren die gleiche Frage stellst.
Im anderen Forum hatte ich dir schon geantwortet, leider, weil ich deinen Beitrag hier erst jetzt gesehen habe

Unerwähntes Crossposting wird nich gern gesehen, das sollte auch dir bekannt sein, da du ja auch nich erst seit gestern in dem einen oder anderen Forum aktiv bist.

Ciao
Thorsten
Anzeige
AW: schade :-/
07.06.2024 20:00:27
khenschel
Hallo,
sorry, zum einen ist mir Crossposting nicht bekannt und zum anderen habe ich im anderen Forum KEINE Antwort auf dieses Thema erhalten ... daher habe ich es hier gepostet.

Gruß
Klaus
AW: schade :-/
07.06.2024 20:11:44
Oberschlumpf
Hi,

"... habe ich im anderen Forum KEINE Antwort auf dieses Thema erhalten..."

echt jetzt?

Zeitpunkt deiner Anfrage = 06.06.2024, 11:00 Uhr
Zeitpunkt meiner Antwort = 07.06.2024, 19:33 Uhr
Wartezeit für dich = 1 Tag, 8,5 Stunden

Bitte wie schnell muss eine Antwort an dich erfolgen, damit du ..ähh.."zufrieden" bist?

Unabhängig davon würde zumindest ich mich (für die anderen Antworter) freuen, wenn du denn in beiden Foren jeweils den Link zum anderen Forum zeigst, damit sich jeder auf den aktuellen Stand bringen kann.

Ciao
Thorsten
Anzeige
AW: schade :-/
07.06.2024 20:22:58
khenschel
ja, echt jetzt! Ich habe bis jetzt KEINE Antwort erhalten. Da ich bis Montag die Lösung des Problems benötige, habe ich eben bei einem anderen Forum gefragt. Von solchen "Ehrenkodexen" wie Crossposting ist mir nichts bekannt. Ich suche einfach nur eine Lösung, sorry. Mir liegt es auch fern, andere zu verärgern. Mir scheint, es werden sehr schnell Emotionen entwickelt. Aber das ist nicht meins. Meine Beweggründe sind immer lösungsorientiert. Persönliche Befindlichkeiten bringe ich mit einem Excel-Problem nicht in Verbindung. Wenn ich helfen kann, tue ich das auch ohne Umstände und Emotionen.

Schönes Wochenende! Ich suche weiter - ist ja noch etwas Zeit ...

Gruß
Klaus
Anzeige
;

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige