Excel vba Egér kurzorpozíció lekérdezése

Excel vba Egér kurzorpozíció lekérdezése
2013-01-05T21:41:24+01:00
2013-01-07T00:22:52+01:00
2022-11-27T20:41:57+01:00
kacsa79
Sziasztok.
Az lenne a problémám, hogy egy excel munkalapon(Pl:Munka1) szeretném lekérdezni az egérkurzor helyét. Mindezt úgy kellene megtennem, hogy kurzormozgásra frissüljön is.
Ha dll-t kell használni az sem baj, csak légyszi segítsetek benne.

köszi.
Mutasd a teljes hozzászólást!
Szvsz munkalapon figyelni mousemove eseményt, főleg az egér pozícióját, nem sok értelme van... miért kell az neked?

Munkalapon azt szokták nézni, hogy melyik cellában állsz vagy melyik lett éppen módosítva....
Userform-on nem lenne gond, ott van erre beépített esemény....


Kiiíráshoz nagyjából jó az idavid által talált kód, mondjuk majd nem MsgBox- szal kellene, hanem Application.StatusBar pl:

Application.StatusBar = "Hello World!"

A nagyobbik gond, ha folyamatosan szeretnéd, hogy az aktuális kurzor pozíció megjelenjen. Lehet esetleg időzítő használatával pl:

Pearson Software Consulting

ahol is a StartTimer-t meghívod a munkafüzet megnyitásakor
(ThisWorkbook-on belül a Load esemény)
a TimerProc-on belül pedig a kurzor pozícióját lekérdező eljárást hívod meg.

Persze így nem mindig azonnal látod a pozíciót ha mondjuk 1 másodpercenként üt az óra ...


De teheted a lekérdezést Do - Loop ciklusba is.
DoEvents használata erősen ajánlott. pl:

ThisWorkbook mögötti részben:

Private Sub Workbook_Open() Get_Cursor_Pos End Sub


Kód modulban, Module1:
Declare Function GetCursorPos Lib "user32" _ (lpPoint As POINTAPI) As Long Type POINTAPI X_Pos As Long Y_Pos As Long End Type Sub Get_Cursor_Pos() Dim Hold As POINTAPI Do GetCursorPos Hold Application.StatusBar = "X: " & Hold.X_Pos & " Y: " & Hold.Y_Pos DoEvents Loop End Sub
Mutasd a teljes hozzászólást!


  • Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long Type POINTAPI x As Long y As Long End Type Sub CurosrXY_Pixels() Dim lngStatus As Long Dim typWhere As POINTAPI lngStatus = GetCursorPos(typWhere) MsgBox "x: " & typWhere.x & Chr(13) & "y: " & typWhere.y, vbInformation, "Pixels" End Sub
    Mutasd a teljes hozzászólást!
  • Érdemes böngészni..(I would like to set the coordinates to the current position of mouse click)
    GetCursorPos returns the position of the mouse relative to the top left corner of the screen.
    (ez kell neked?)

    Van kód is az oldalon, picit más
    pointsPerPixel-x-y
    Mutasd a teljes hozzászólást!
  • Szvsz munkalapon figyelni mousemove eseményt, főleg az egér pozícióját, nem sok értelme van... miért kell az neked?

    Munkalapon azt szokták nézni, hogy melyik cellában állsz vagy melyik lett éppen módosítva....
    Userform-on nem lenne gond, ott van erre beépített esemény....


    Kiiíráshoz nagyjából jó az idavid által talált kód, mondjuk majd nem MsgBox- szal kellene, hanem Application.StatusBar pl:

    Application.StatusBar = "Hello World!"

    A nagyobbik gond, ha folyamatosan szeretnéd, hogy az aktuális kurzor pozíció megjelenjen. Lehet esetleg időzítő használatával pl:

    Pearson Software Consulting

    ahol is a StartTimer-t meghívod a munkafüzet megnyitásakor
    (ThisWorkbook-on belül a Load esemény)
    a TimerProc-on belül pedig a kurzor pozícióját lekérdező eljárást hívod meg.

    Persze így nem mindig azonnal látod a pozíciót ha mondjuk 1 másodpercenként üt az óra ...


    De teheted a lekérdezést Do - Loop ciklusba is.
    DoEvents használata erősen ajánlott. pl:

    ThisWorkbook mögötti részben:

    Private Sub Workbook_Open() Get_Cursor_Pos End Sub


    Kód modulban, Module1:
    Declare Function GetCursorPos Lib "user32" _ (lpPoint As POINTAPI) As Long Type POINTAPI X_Pos As Long Y_Pos As Long End Type Sub Get_Cursor_Pos() Dim Hold As POINTAPI Do GetCursorPos Hold Application.StatusBar = "X: " & Hold.X_Pos & " Y: " & Hold.Y_Pos DoEvents Loop End Sub
    Mutasd a teljes hozzászólást!
  • Msgbox, StatusBar után munkalapról indított UserForm:

    Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long Type POINTAPI X As Long Y As Long End Type Sub CPos() Dim Hstat As Long Dim Itt As POINTAPI With Sheets("CP").CB1 If .Caption = "XY nem mutat" Then .Caption = "XY mutat" Unload UF Exit Sub Else .Caption = "XY nem mutat" 'PT értéke sec-ben a kurzorpozíció _ lekérdezésének gyakorisága PT = 0.2 Load UF UF.Show (0) Do While Not UserForm_Click Start = Timer Do While Timer < Start + PT DoEvents Loop Hstat = GetCursorPos(Itt) UF.Label1.Caption = "X= " & Itt.X UF.Label2.Caption = "Y= " & Itt.Y Loop Unload UF End If End With End Sub
    Mutasd a teljes hozzászólást!
    Csatolt állomány
Tetszett amit olvastál? Szeretnél a jövőben is értesülni a hasonló érdekességekről?
abcd