Screentoclient



  • Screentoclient
    di Simò (utente non iscritto) data: 14/11/2010

    Il codice riportato mi permette di avere le coordinate del cursore rispetto al monitor.
    non uso la screetoclient anche se preferirei avere le coordinate rispetto al foglio excel "activesheet".
    ho provato a usare la screentoclient ma non so dove inserire il riferimento all'"activesheet".

     
    Private Type POINTAPI
    X As Long
    Y As Long
    End Type
    Private Declare Function GetCursorPos Lib "user32" _
    (lpPoint As POINTAPI) As Long
    'Private Declare Function ScreenToClient Lib "user32" ( _
        'ByVal hwnd As Long, _
        lpPoint As POINTAPI) As Long
    Dim pos As POINTAPI 
    Sub macro_activesheet()
    GetCursorPos pos 
    'ScreenToClient Me.hwnd, pos
    Range("Q5").Value = pos.X
    Range("R5").Value = pos.Y
    End Sub



  • di Ricky53 (utente non iscritto) data: 21/11/2010

    Ciao,
    a te cosa occorre fare effettivamente?
    non dire come vuoi farlo ma spiega in modo chiaro e preciso quale necessità hai ed insieme vediamo di risolvere.

    ciao da ricky53


  • Screentoclient
    di Simò (utente non iscritto) data: 21/11/2010

    Mi serve avere le coordinate del cursore rispetto al foglio, non rispetto al monitor.
    cerco di spiegare l'utilità:
    se il mio sistema di riferimento è quello del foglio, se voglio disegnare un segmento che collega due punti mi basta scrivere una macro in cui inserisco una linea in cui al posto delle coordinate degli estremi ho inserito i valori delle celle dove ho inserito le coordinate del cursore(esempio 1) .
    attualmente alle coordinate assolute sottraggo delle costanti(x e y) che però variano a secondo della modalità di visualizzazione del foglio o della barra delle applicazioni (esempio 2). spero di essermi spiegato
     
    'esempio 1
    activesheet.Shapes.AddLine((Range("Q11").Value), (Range("R11").Value), (Range("Q12").Value), (Range("R12").Value)).Select
    
    'esempio 2
    Range("Q11").Value = (pos.x - 26) * 0.75
    Range("R11").Value = (pos.y - 114) * 0.75
    'pos.x e pos.y sono le coordinate del cursore  rispetto al monitor.


  • Screentoclient
    di Simò (utente non iscritto) data: 26/11/2010

    Forse nella risposta precedente non sono stato molto chiaro: insomma vorrei riportare la coordinata acquisita con la getcursorpos/pointapi (rispetto al sistema di riferimento del monitor) al sistema di riferimento del foglio.
    posso farlo manualmente misurando le coordinate x e y dei bordi del foglio. sarebbe meglio se questo procedimento fosse automatico