Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1320to1324
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

UserForm - MouseOver - zentral auswerten

UserForm - MouseOver - zentral auswerten
23.07.2013 11:04:12
Michael
Hi.
Ich habe hier ein Userform, mit ettlichen Controls.
Nun werte ich u.a. auch das MouseOver Event aus.
Je nach Controls unter dem Mauszeiger wird eine Info angezeigt oder auch nicht.
Anzeigen ist klar, bei MouseOver des entsprechenden Controls.
Ausblenden ist anwändiger, bei MouseOver bei allen anderen Controls.
Das Lästige ist nun, das der Code nur mehr schwer lesbar ist, da ich den MouseOver für jedes Control abfangen muß.
Gibt es eine Möglichkeit das MouseOver zentral abzufangen und die Aktion an Hand des Control Namens zu steuern - dachte da an eien Art zentrales Event?
Danke
Michi

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: UserForm - MouseOver - zentral auswerten
23.07.2013 13:03:33
fcs
Hallo Michi,
bist sicher, das sich um ein VBA-Userform handelt, diese kennen die Steuerelement-Ereignisse MouseMove, MouseUp und MouseDown aber nicht MouseOver.
Warum nutzt du nicht die VBA-Steuerelement-Eigenschaft "ControlTipText" für deine Zwecke?
Wenn es sich um VBA-Userform handelt, dann kannst du das MouseMove-Ereignis des Userforms selber nutzen, um das Steuerelement mit der Info auszublenden.
Gruß
Franz
In einem Excel-VBA-Userform könnte man das etwa so umsetzen.
Möglicherweise bekommt man die Ereignisauswertung über ein Klassenmodul auch zentral hin, da hab ich aber zu wenig Erfahrungen, speziell wenn wie hier verschieden Steuerelemente in einer Klasse behandelt werden sollen.
Beispiel-Code
'Userform Code
Private Sub prcMouseMove(strControl As String, strText As String, _
Optional bolOberhalb As Boolean = False)
'Blendet für Steuerelement mit Name strControl das Label "LabelInfo" mit _
dem Text strText ein
'Label wird entsprechend der Option bolOberhalb über oder unter dem Steuerelement angezeigt
Dim dblLeft As Double, dblTop As Double
With Me.Controls(strControl)
dblLeft = .Left
If bolOberhalb = True Then
dblTop = .Top - Me.LabelInfo.Height
Else
dblTop = .Top + .Height
End If
End With
With Me.LabelInfo
.Caption = strText
.Top = dblTop
.Left = dblLeft
.Visible = True
End With
End Sub
Private Sub ComboBox1_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, _
ByVal X As Single, ByVal Y As Single)
prcMouseMove "ComboBox1", "Hier den namen auswählen", True
End Sub
Private Sub CommandButton1_Click()
Unload Me
End Sub
Private Sub CommandButton1_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, _
ByVal X As Single, ByVal Y As Single)
prcMouseMove "CommandButton1", "Press this Button"
End Sub
Private Sub Label1_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, _
ByVal X As Single, ByVal Y As Single)
prcMouseMove "Label1", "I am a Label"
End Sub
Private Sub TextBox1_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, _
ByVal X As Single, ByVal Y As Single)
prcMouseMove "Textbox1", "Hier Vorname eingeben"
End Sub
Private Sub UserForm_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, _
ByVal X As Single, ByVal Y As Single)
'blendet das Infolabel aus
With Me.LabelInfo
.Visible = False
.Caption = ""
End With
End Sub

Anzeige
AW: UserForm - MouseOver - zentral auswerten
23.07.2013 13:43:54
Michael
Hi Franz.
Sorry, hab mich vertan, ist natürlich wie Du schon berichtigt hast das MouseMove Event.
Auch in Deinem Beispiel muß ich zu jedem Control das MouseMove Event vorhalten.
Meine Userform hat ... moment ... 126 Controls incl. der Userform, zwar nicht immer alle sichtbar (Situationsbedingtes ein-/ausblenden und MultiPage) aber bei jedem brauch ich das Event.
Hauptsächlich deswegen, damit ich auch schnelle und ruckartige Mausbewegungen immer sauber getriggert werden.
"Wenn es sich um VBA-Userform handelt, dann kannst du das MouseMove-Ereignis des Userforms selber nutzen, um das Steuerelement mit der Info auszublenden."
Just das macht halt bei schnellen und ruckartigen Bewegungen Probleme, so dass ich mich nicht nur auf das UserForm_MouseMove verlassen kann.
ControlTipText ist leider nicht Multiline und reicht mir bei weitem nicht aus.
Es werden auch diverse Infobilder mit angezeigt.
Bemühe auch schon seit 3-4 Tagen Google, aber auch ohne Erfolg.
Es funktioniert aktuell prima, nur die extreme Anzahl an Codezeilen erschwert den Überblick doch ungemein.
Dachte halt an eine Art globales Event, ohne für jedes Control ein eigenes Event haben zu müssen.
Michi

Anzeige
AW: UserForm - MouseOver - zentral auswerten
23.07.2013 13:54:22
Michael
Ups, noch offfen ...

AW: UserForm - MouseOver - zentral auswerten
23.07.2013 14:43:13
Luschi
Hallo Michi,
hier mal ein Beispiel, wie mit Klassenprogrammierung so ein Problem löst wird.
Originaldatei: http://hajo-excel.de/uebersicht.htm - UserForm12
Ich habe das 'MouseOver'-Ereignis für das CheckBox-Formular und das 'Click'-Ereignis
für das OptionButton-Formular hinzugefügt, sowie das Aufräumen der 2 Array veranlaßt.
https://www.herber.de/bbs/user/86517.zip
Gruß von Luschi
aus klein-Paris

AW: UserForm - MouseOver - zentral auswerten
24.07.2013 08:47:36
Michael
Hi Luschi,
War zwar einiges an umprogrammieren, aber es hat super funktioniert!
Vielen Danke für die Hilfe!
Michi
aus Bamberg
PS: Wo ist den "klein-Paris"?
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige