Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
984to988
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
984to988
984to988
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Userform speziell schließen

Userform speziell schließen
17.06.2008 16:36:00
Richard
Hallo,
hab hier so ein bisher noch ungelöstes Problem. Ich hoffe ihr könnt mir vielleicht weiterhelfen.
Hab in nem Excelsheet ein Button, welches nicht per Click sondern mit dem MouseMove-Ereignis eine Userform öffnet. Jetzt geh ich mit der Maus in den Bereich der Userform, möchte nun aber haben, dass sobald ich aus dem Bereich der Userform gehe, diese geschlossen wird.
Die Userform soll also so lange geöffnet bleiben, bis der Mauszeiger sich nicht mehr darauf befindet.
Vielen Dank schon mal
Mit freundlichen Grüßen
Richard

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Userform speziell schließen
17.06.2008 17:35:07
Nepumuk
Hallo Richard,
das ist garnicht so einfach, denn das Userform reagiert nicht mehr auf die Maus, sobald sich ein Steuerelement darauf befindet. Du müsstest also mit dem Userform einen Timer starten, welcher permanent die Position des Mauszeigers auf dem Bildschirm überwacht. Die Position des Mauszeigers und ob er sich noch über dem Userform befindet, kannst du nur per API-Funktion herausbekommen. Wenn ich heute abend noch Lust habe, dann mach ich dir mal so etwas.
Gruß
Nepumuk

Alternative Idee ...
17.06.2008 18:47:00
Johannes
Hallo Richard,
ich haette eine verrueckte Idee, mit der man die Unmassen API Experimente umgehen koennte. Wie Nepumuk schon schrieb, muesste man zyklische die aktuelle Cursorposition pollen, ueberpruefen ob sich diese mit der Userform deckt und dann ggf. Aktionen oder Reaktionen ableiten. Das werden unmassen an komplizierten Zeilen (und wenn Nepumuk schon sagt, dass es nicht einfach ist :-)).
Mein Vorschlag ist vielleicht naiv, aber zieh ein unsichtbares Frame auf die Userform und lass dann zur Form noch nen gewissen Abstand (1-2 Rasterelemente). Dann kannst du ueber die MouseMove-Events jeweils von Frame und Form aggieren.
Die API-Loesung waere sicher professioneller aber vielleicht taugt das ja auch schon (Beispiel):

Dim blnOnOff As Boolean
Private Sub Frame1_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, _
ByVal X As Single, ByVal Y As Single)
blnOnOff = True
End Sub
Private Sub UserForm_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, _
ByVal X As Single, ByVal Y As Single)
If blnOnOff Then
blnOnOff = False
Me.Hide
End If
End Sub


Anzeige
AW: Userform speziell schließen
17.06.2008 19:48:00
Tino
Hallo,
habe hier mal angefangen nur stimmen die Positionen nicht und ich weis auch noch nicht warum.
Habe jetzt leider keine Zeit mehr weiter zu experimentieren, aber vielleicht kann dies einer korrigieren.
https://www.herber.de/bbs/user/53170.xls
Gruß Tino

www.VBA-Excel.de


AW: Userform speziell schließen mit Frames
18.06.2008 00:27:00
Daniel
Hallo
man kann das Problem mit Frames lösen.
diese verfügen über das MouseMove-Event, daher kann man das Verlassen der Userform des Mauszeigers mit 2 Frames prüfen und darauf reagieren.
die normalen Userform-Steuerelemente müssen sich innerhalb des 2. Frames befinden
https://www.herber.de/bbs/user/53175.xls
der Code dazu sieht so aus:

Option Explicit
Dim bolSchließen1 As Boolean
Dim bolSchließen2 As Boolean
Private Sub Frame1_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, _
_
ByVal Y As Single)
Select Case bolSchließen1
Case False
bolSchließen1 = True And bolSchließen2
Case True
Unload Me
End Select
End Sub
Private Sub Frame2_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, _
_
ByVal Y As Single)
bolSchließen2 = True
End Sub


kleiner Nachteil der Methode:
- man hat einen Rand in der Userform, den man nicht nutzen kann.
- durch schnelle Mausbewegungen lässt sich das ganze austricksen
Gruß, Daniel
ps. ich hab die Frames zur verdeutlichung sichtbar gelassen, bei bedarf kann man sie ja so umformatieren, daß sie nicht auffallen.

Anzeige
Siehe mein Posting ... ;-)
18.06.2008 00:51:10
Johannes
Gruesse,
Johannes

AW: Siehe mein Posting ... ;-)
18.06.2008 23:13:04
Daniel
sorry, hab deinen ersten Beitrag nicht gelesen
Gruß, Daniel

Loesung ueber die WinAPI ...
18.06.2008 05:05:00
Johannes
Hallo Richard,
hier die saubere Loesung ueber die API Funktionen.
Garnicht so ohne ... dieses erwuenschte kosmetische Fensterhandling. ;-)
https://www.herber.de/bbs/user/53177.xls
Gruesse,
Johannes

AW: Loesung ueber die WinAPI ...
18.06.2008 08:14:19
Richard
Hallo,
ersteinmal vielen vielen Dank für eure Beiträge.
Ihr habt mir wirklich sehr geholfen. Für mich war die Frame-Lösung natürlich viel leichter zu verstehen, habe mich jedoch für die API-Lösung entschieden, da ich die Titelleiste auch ausgeblendet haben will und dieses auch schon mit API ermöglichen konnte.
Danke nochmals
MfG
Richard
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige