Per usare la GetCursorPos metti questo codice in testa al Modulo:
- Codice: Seleziona tutto
Private Type POINTAPI
x As Long
y As Long
End Type
Private Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long
Poi nella macro in cui vuoi usarla inserisci
- Codice: Seleziona tutto
Dim posit As POINTAPI
GetCursorPos posit ' Read Coordinates
La posizione orizzontale la troverai all' interno di
posit.x e quella verticale in
posit.yTUTTAVIA queste coordinate sono riferite allo schermo intero, non alla finestra dati di Excel; nella mia installazione lo 0/ 0 dell' area dati corrisponde a 27/ 207 punti, se l' applicazione e' massimizzata.
Per posizionare l' immagine correttamente devi trovare le coordinate del punto top-left dell' area dati, ed e' questo dato che ti dicevo e' abbastanza incasinato da trovare.
Comunque non e' impossibile; fai una ricerca su google con la stringa "get absolute coordinates top left cell excel" (senza gli apici; in italiano la ricerca e' meno efficace) e usa il codice che trovi.
Puoi trovare le coordinate di un Controllo (es CommandButton1) tramite
- Codice: Seleziona tutto
Ypos = ActiveSheet.Shapes.Range("CommandButton1").Top
Xpos = ActiveSheet.Shapes.Range("CommandButton1").Left
Sono relative all' area dati di Excel, quindi direttamente utilizzabili per posizionare una immagine usando, ad esempio
- Codice: Seleziona tutto
Selection.ShapeRange.Left = Xpos
Selection.ShapeRange.Top = Ypos
(lavorano sull' immagine selezionata)
Ciao