HERBERS
Excel-Forum
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Entdecke rund 2 Millionen Excel-Lösungen im
Forumsarchiv
Forumbeitrag
Excel-Version des Fragestellers:
2010
Erfahrungslevel des Fragestellers:
Basiskenntnisse in VBA
volti
12.05.2026 23:31:55
AW: Userform, die sich wie ein normales Fenster verhält?
Hallo,

einfach ist relativ.

Für einen Nicht-API-Freund, der lieber mit reinem VBA programmiert, hast Du Recht, es geht auch ganz einfach mit der jeweiligen Addition.

Nun kommt es drauf an, was man möchte.

Die beiden Varianten liefern nicht das gleiche Ergebnis.
a) liefert Pixel
b) liefert Excel-Pixel

Wenn man das Ergebnis an einer Stelle haben möchte.....

Bei b muss man ggf. etwas mehr Schreibarbeit leisten oder an die Sammel-Sub-das Objekt mit übergeben
Private Sub UserForm_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal x As Single, ByVal y As Single)

Call GetMausPos(x, y)
End Sub
Private Sub CommandButton1_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal x As Single, ByVal y As Single)
Call GetMausPos(CommandButton1.Left + x, CommandButton1.Top + y)
End Sub
Private Sub ListBox1_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal x As Single, ByVal y As Single)
Call GetMausPos(ListBox1.Left + x, ListBox1.Top + y)
End Sub

Private Sub GetMausPos(ByVal x As Single, ByVal y As Single)
GetCursorPos PT
ScreenToClient GetActiveWindow(), PT
Debug.Print PT.x, PT.y, x, y
End Sub


Gruß
KH
Als Antwort auf diesen Beitrag
Daniel
12.05.2026 21:24:48
AW: Userform, die sich wie ein normales Fenster verhält?
Wäre es nicht noch einfacher, den .Top bzw .Left- Wert des Controls zum Y und X des MouseMove hinzu zu addieren, um damit das Y und X bezogen auf die Userform zu erhalten?
Gruß Daniel
Antwort auf Beitrag erstellen
Bitte einen Anwendernamen ohne @ eingeben.
Bitte das Passwort eingeben.
Bitte eine gültige E-Mail-Adresse eingeben.
Bitte einen Betreff eingeben.
Weitere Optionen
Aktivieren, wenn die Frage/der Beitrag noch nicht beantwortet wurde und unter Listen > Offene Threads erscheinen soll.
Beispieldatei hochladen

Bitte einen Nachrichtentext eingeben.