Office Forum
www.Office-Loesung.de
Access :: Excel :: Outlook :: PowerPoint :: Word :: Office :: Wieder Online ---> provisorisches Office Forum <-
Userform am Mauszeiger anzeigen
zurück: OnKey im Userform weiter: Userform an einer bestimmten Zelle anzeigen Unbeantwortete Beiträge anzeigen
Neues Thema eröffnen   Neue Antwort erstellen     Status: Information Facebook-Likes Diese Seite Freunden empfehlen
Zu Browser-Favoriten hinzufügen
Autor Nachricht
Isabelle :-)
Menschin


Verfasst am:
21. Okt 2013, 23:36
Rufname:
Wohnort: Westlicher Spiralarm der Galaxis


Userform am Mauszeiger anzeigen - Userform am Mauszeiger anzeigen

Nach oben
       Version: Office 2k (2000)

Hallöchen,

ein Userform direkt neben dem Mauszeiger anzuzeigen ist mit ein paar API-Funktionen kein Problem. So können wir beim Klick in eine Zelle oder einem Kontextmenüpunkt das Userform neben der Maus positionieren, damit der Benutzer darin sofort etwas auswählen kann. Wir müssen nur sicherstellen, dass das Userform immer im sichtbaren Bereich angezeigt wird. Das sind ein paar ganz einfache Rechnungen. Bei der Berechnung der Oben-Position berücksichtigen wir dabei auch die Höhe der Taskleiste.

Im Modul des Userforms:

Code:
Option Explicit

Private Declare Function GetCursorPos Lib "user32.dll" ( _
    lpPoint As POINTAPI) As Long
Private Declare Function GetSystemMetrics Lib "user32.dll" ( _
    ByVal nIndex As Long) As Long
Private Declare Function FindWindowA Lib "user32.dll" ( _
    ByVal lpClassName As String, _
    ByVal lpWindowName As String) As Long
Private Declare Function GetWindowRect Lib "user32.dll" ( _
    ByVal hWnd As Long, _
    ByRef lpRect As RECT) As Long

Private Const SM_CXSCREEN As Long = 0&
Private Const SM_CYSCREEN As Long = 1&

Private Type RECT
    Left As Long
    Top As Long
    Right As Long
    Bottom As Long
End Type

Private Type POINTAPI
    X As Long
    Y As Long
End Type

Private Sub CommandButton1_Click()
    Call Unload(Object:=Me)
End Sub

Private Sub UserForm_Initialize()

    Const CONVERSION_FACTOR As Single = 0.75 'Um Pixel in Point umzurechnen

    Dim udtCursorPos As POINTAPI, udtRectangle As RECT
    Dim lnghWnd As Long

    'Position der Maus auslesen
    Call GetCursorPos(udtCursorPos)

    'Zugriffsnummer der Taskleiste auslesen
    lnghWnd = FindWindowA("Shell_traywnd", vbNullString)

    'Position der Taskleise auslesen
    Call GetWindowRect(lnghWnd, udtRectangle)

    'Startposition des Userforms auf manuell setzen
    StartUpPosition = 0

    'Linke Position des Userforms berechnen
    If udtCursorPos.X * CONVERSION_FACTOR + Width > _
        GetSystemMetrics(SM_CXSCREEN) * CONVERSION_FACTOR Then

        'Links der Maus anzeigen
        Left = udtCursorPos.X * CONVERSION_FACTOR - Width

    Else

        'Rechts der Maus anzeigen
        Left = udtCursorPos.X * CONVERSION_FACTOR

    End If

    'Oben-Position des Userforms berechnen
    If udtCursorPos.Y * CONVERSION_FACTOR + Height > _
        GetSystemMetrics(SM_CYSCREEN) * CONVERSION_FACTOR - _
        (udtRectangle.Bottom - udtRectangle.Top) Then

        'Über der Maus anzeigen
        Top = udtCursorPos.Y * CONVERSION_FACTOR - Height

    Else

        'Unter der Maus anzeigen
        Top = udtCursorPos.Y * CONVERSION_FACTOR

    End If
End Sub

Zum testen einfach in das Modul einer Tabelle:

Code:
Option Explicit

Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
    Cancel = True
    Call UserForm1.Show
End Sub

_________________
LG Isi

Die Mitgliedschaft im Forum erhöht deine Chance auf eine Antwort von mir um 99,999%
Neues Thema eröffnen   Neue Antwort erstellen Alle Zeiten sind
GMT + 1 Stunde

Diese Seite Freunden empfehlen

Seite 1 von 1
Gehe zu:  
Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum nicht posten
Du kannst Dateien in diesem Forum herunterladen

Verwandte Themen
Forum / Themen   Antworten   Autor   Aufrufe   Letzter Beitrag 
Keine neuen Beiträge Excel Formeln: Automatisches Anzeigen einzelner Zellen bei aktuellem Datum 22 m.barth 2844 15. Feb 2006, 17:45
Moudi Automatisches Anzeigen einzelner Zellen bei aktuellem Datum
Keine neuen Beiträge Excel Formeln: Formeln in Feldern anzeigen 2 riki1512 783 13. Feb 2006, 17:25
riki1512 Formeln in Feldern anzeigen
Keine neuen Beiträge Excel Formeln: Werte eines Bereichs anzeigen 3 Markus Untersmann 13107 05. Jan 2006, 18:23
fridgenep Werte eines Bereichs anzeigen
Keine neuen Beiträge Excel Formeln: Schnittpunkt 2er Geraden im Exceldiagramm wertmäßig anzeigen 5 Gast 22344 17. Dez 2005, 12:30
ae Schnittpunkt 2er Geraden im Exceldiagramm wertmäßig anzeigen
Keine neuen Beiträge Excel Formeln: den höchsten und den niedrigsten Wert anzeigen 2 joefaser 1218 19. Nov 2005, 11:24
joefaser den höchsten und den niedrigsten Wert anzeigen
Keine neuen Beiträge Excel Formeln: sverweis nur anzeigen, wenn in anderer Zelle ein Wert steht. 3 Holzmichel 1402 03. Jul 2005, 11:13
Holzmichel sverweis nur anzeigen, wenn in anderer Zelle ein Wert steht.
Keine neuen Beiträge Excel Formeln: Den zum Maximalwert zugehörigen Text anzeigen? 6 Florian 1523 01. Jul 2005, 11:50
Florian Den zum Maximalwert zugehörigen Text anzeigen?
Keine neuen Beiträge Excel Formeln: Name der Arbeitsmappe in einer Zelle anzeigen? 1 wolle1969 1699 23. Jun 2005, 14:32
Arnim Name der Arbeitsmappe in einer Zelle anzeigen?
Keine neuen Beiträge Excel Formeln: Wert nicht als 0 anzeigen,aber trotzdem damit rechnen können 4 Bleppomueller 1319 20. Jun 2005, 14:29
Gast Wert nicht als 0 anzeigen,aber trotzdem damit rechnen können
Keine neuen Beiträge Excel Formeln: Verknüpfungen mit langem Pfad, nicht anzeigen! 2 Nikos 706 29. März 2005, 13:28
Nikos Verknüpfungen mit langem Pfad, nicht anzeigen!
Keine neuen Beiträge Excel Formeln: wie kann man statt der Zahl die Formeln anzeigen/ausdrucken 2 Ina-Ina 984 23. Feb 2005, 13:04
Ina-Ina wie kann man statt der Zahl die Formeln anzeigen/ausdrucken
Keine neuen Beiträge Excel Formeln: Datum rot anzeigen 2 Mimoss 2046 15. Feb 2005, 23:07
AnBo Datum rot anzeigen
 

----> Diese Seite Freunden empfehlen <------ Impressum - Besuchen Sie auch: Access Tabellen