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

UF per MouseMove-Ereignis de-/aktivieren

UF per MouseMove-Ereignis de-/aktivieren
03.07.2013 12:17:57
David
Hallo zusammen,
ich habe in einem Tabellenblatt einige Bilder. Ich möchte, dass beim Draufzeigen (nicht klicken) mit der Maus eine UF aufgerufen wird.
Dazu kann man ja anscheinend (hab ich bisher nie benutzt), das MouseMove-Ereignis verwenden:
Private Sub Image1_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, _
ByVal Y As Single)
PicFlyover.Show vbModeless
End Sub
Allerdings soll, wenn der Mauszeiger das Bild "verlässt", die UF automatisch wieder geschlossen werden.
Im Prinzip eine Funktionalität, vergleichbar mit den Kommentaren von Zellen.
Geht das? Und wenn ja, wie muss man das angehen?
Gruß
David

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Zusatzfrage: Parameter mitgeben
03.07.2013 12:23:47
David
Noch eine Zusatzfrage:
beim Auslösen des Ereignisse werden ja bestimmte Parameter "gefüllt"
...Button ... Shift ... X ... Y ...
Wie kann ich diese Parameter mit an die UF übergeben, um sie dort auszuwerten/weiter zu verarbeiten?
Gruß
David

AW: UF per MouseMove-Ereignis de-/aktivieren
04.07.2013 10:17:14
fcs
Hallo David,
die Übernahme der Maus-Parameter in ein Userform für Auswertungen ist kein Problem.
Entweder du speicherst die Werte in Variablen, die in einem allgemeinen Modul als Public deklariert sind oder du weist die Werte Steuerelementen (z.B. Textboxen) des Userforms zu.
Die Möglichkeit das Userform beim Verlassen des Bildes wieder auszublenden/entladen funktioniert nur, indem man einen Randbereich des Bildes hierfür reserviert. Dabei darf dann die Mausbewegung nicht zu schnell sein, damit MouseMove korrekt reagiert.
Du kannst aber nicht gleichzeitig im Userform Aktionen ausführen und die Mausbewegungen am Bild auswerten. Alle Auswertungen, die du machen willst, müssen in der MouseMove-Prozedur erfolgen.
Die Ergebnisse der Auswertung kannst du dann im UF anzeigen. Evtl. kann man abhängig von MouseMove-Parametern das MouseMove-Ereignis so steuern, dass die Kontrolle an das UF übergeben wird und durch Aktionen im UF wieder aktiviert wird.
Leider funktioniert momentan das Hochgeladenen einer Datei. Deshalb nachfolgenden ein Beispiel für Userform1 mit 5 Textboxen zur Anzeige der Maus- und Tasteninfo inkl. Beispiele zur Auswertung der Parameter.
Gruß
Franz
Private Sub Image1_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, _
ByVal X As Single, ByVal Y As Single)
Dim bolAusblenden As Boolean
Dim strText As String
Const dblRand As Double = 10 'Rand des Bildes, der für das Ausblenden des UF sorgt
'Werte in Public-Variablen deklariert in einem allgemeinen Modul einlesen
lngShift = Shift: lngButton = Button: dblMouseX = X: dblMouseY = Y
varCaller = "Image1"
bolAusblenden = False
With Me.Image1
Select Case X
Case Is  .Width - dblRand
bolAusblenden = True
Case Else
Select Case Y
Case Is  .Height - dblRand
bolAusblenden = True
End Select
End Select
End With
With UserForm1
If .Visible = True And bolAusblenden = True Then
Unload UserForm1
Else
If .Visible = False And bolAusblenden = False Then
.Show vbModeless
End If
With .TextBox1
.Value = Shift
Select Case Shift
Case 0
.BackColor = &H80000005  'weiß
Case 1 'shift gedrückt
.BackColor = &HFFFF&     'gelb
Case 2 'Strg/Ctrl gedrückt
.BackColor = &HFF&       'rot
Case 3 'shift + Strg gedrückt
.BackColor = &HFF00&     'grün
Case 4 'Alt gedrückt
.BackColor = &HFF00FF     'violett
Case 5 'shift + Altgedrückt
.BackColor = &HFFFF00     'hellblau
Case 6 'Strg+Alt gedrückt
.BackColor = &H80FF&      'gold/orange
Case 7 'shift+Strg+Alt gedrückt
.BackColor = &HFF0000     'blau
End Select
End With
With .TextBox2
.Value = Button
Select Case Button
Case 0
.BackColor = &H80000005  'weiß
Case 1 'linke Maustaste gedrückt
.BackColor = &HFFFF&     'gelb
Case 2 'rechte Maustaste  gedrückt
.BackColor = &HFF&       'rot
Case 3 'linke]rechte Maustaste  gedrückt
.BackColor = &HFF00&     'grün
End Select
End With
.TextBox3 = X
.TextBox4 = Y
strText = ""
Select Case X
Case Is = Me.Image1.Width / 2
strText = "rechts"
End Select
Select Case Y
Case Is = Me.Image1.Height / 2
strText = strText & "-unten"
End Select
.TextBox5 = "Image1 " & strText
End If
End With
End Sub

Anzeige
AW: Beispieldatei
04.07.2013 10:37:40
fcs
Hallo David,
hier noch eine Beispieldatei.
https://www.herber.de/bbs/user/86199.xlsm
Hatte zuerst eine zu große Grafikdatei zu den Image-Steuerelementen gewählt.
Gruß
Franz

AW: Beispieldatei
04.07.2013 11:13:25
Dave
Hallo Franz,
ich hattte gehofft, das das etwas einfacher zu realisieren ist. Ich weiß nicht, ob ich das heute schaffe, mir anzusehen, also bitte nicht böse sein, falls kurzfristig kein Feedback kommt.
Das in der UF keine Aktionen ausführbar sind, ist ok. Ich will die nur zur reinen Anzeige von Zusatz-Informationen nutzen. Leider sind mir da die Möglichkeiten über Msg-Boxen oder "ControlTipText" zu unflexibel und unpraktikabel, deswegen die Idee mit der UF.
Ich denke die Möglichkeit der Auswertung der Randbereiche für die Ausblendung hört sich am einfachsten umsetzbar an.
Auf jeden Fall schon mal vielen Dank für die Mühe.
Gruß
David
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige