Una famiglia di software per fogli di calcolo Microsoft con strumenti per l'analisi, la creazione di grafici e la comunicazione dei dati.
Ciao Maurizio. Come tu hai suggerito ho ripensato al tutto. Ti riporto le mie riflessioni:
- Frame Vs UserForm In questo caso non capisco perché costruire un U.F. per acquisire sempre da 2 a 6 dati da riportare sul Foglio. Tra l'altro nell'U.F. dovrei costruire il Frame o un suo equivalente. Questa soluzione mi complicherebbe la vita e aumenterebbe il codice da dover gestire.
- Anche il Frame così come l'U.F. sono richiamati da un Bottone.
- Quello che non capisco è invece una cosa più concettuale. Mi chiedo perché gli ActiveX mettono a disposizione degli eventi se poi non si riescono a gestire in modo semplice? A cosa mi servono tutti gli eventi di mouse nel Foglio quando possono (ammesso che lo siano, non li ho provati) essere utilizzati solo in una U.F.??? L'utilizzo delle DLL Set/Get CursorPosition renderebbe la vita molto più semplice e il prodotto (programma) più accattivante.
- Fare queste riflessioni mi ha indotto a fare delle ricerche su Internet e delle prove, che non ti descrivo - perché richiederebbero troppo tempo - in ogni caso il risultato finale è che gli eventi legati al Mouse e le DLL non si integrano, non danno errore!!!! solo scompaiono gli oggetti ActiveX, da qui il punto 3.
- Perché questa mancata interazione? In VB Net esiste. perché non riportarla anche qui? Bho!!!
- Egoisticamente parlando credo di aver speso anche troppo tempo a fronte di un problema di pura estetica e che per essere risolto praticamente è sufficiente dare due coordinate per allocare il Frame in una posizione valida.
Ti allego alcuni riferimenti relativi al problema trattato. Io non sono riuscito a cavarci più di quanto ti ho scritto.
RIFERIMENTI:
GOOGLE: get cursor position excel vba
FROM: http://www.mrexcel.com/archive/VBA/29549.html
Re: :-) Come posso ottenere posizione corrente del "cursore"?
Scritto da Mark O'Brien il 6 Set 2001 02:05
Se avete bisogno di la posizione del cursore reale e non il postion della cella evidenziata ecco rapido esempio di chiamata GetCursorPos API.
In primo luogo, creare un modulo utente e aggiungere un pulsante di comando ad esso. Quindi aggiungere il codice al form utente:
Private Tipo POINTAPI
x As Long
y As Long
Type End
GetCursorPos Private Declare Function Lib "user32" _
(lpPoint Come POINTAPI) As Long
Pos fiochi come POINTAPI 'Declare variabile
Private Sub CommandButton1_Click ()
GetCursorPos pos 'Avanti Coordinate
MsgBox "Cursore Pointer e ':" & vbNewLine _
& "x: =" & pos.x & vbNewLine _
& "y: =" & pos.y
End Sub
Eseguire il form e quando si fa clic sul pulsante ti sarà detto dove si trova il cursore.
Spero che questo è utile.
From: http://www.freevbcode.com/ShowCode.asp?ID=2890
Private Declare Function GetCursorPos Lib "user32" (lpPoint As _
POINTAPI) As Long
Private Type POINTAPI
x As Long
y As Long
End Type
Dim a As POINTAPI
Dim b As Long
Dim c As Long
' add labels and timer control in the form
Private Sub Form_Load()
Timer1.Interval = 1
End Sub
Private Sub Timer1_Timer()
mousepos
End Sub
Private Sub mousepos()
ret = GetCursorPos(a)
b = a.x
c = a.y
Label1.Caption = b
Label2.Caption = c
End Sub
From :https://support.microsoft.com/en-us/kb/152969?wa=wsignin1.0
Esempio di Set/Get CursorPosition
Type the following code into a new module:
' Access the GetCursorPos function in user32.dll
Declare Function GetCursorPos Lib "user32" _
(lpPoint As POINTAPI) As Long
' Access the GetCursorPos function in user32.dll
Declare Function SetCursorPos Lib "user32" _
(ByVal x As Long, ByVal y As Long) As Long
' GetCursorPos requires a variable declared as a custom data type
' that will hold two integers, one for x value and one for y value
Type POINTAPI
X_Pos As Long
Y_Pos As Long
End Type
' Main routine to dimension variables, retrieve cursor position,
' and display coordinates
Sub Get_Cursor_Pos()
' Dimension the variable that will hold the x and y cursor positions
Dim Hold As POINTAPI
' Place the cursor positions in variable Hold
GetCursorPos Hold
' Display the cursor position coordinates
MsgBox "X Position is : " & Hold.X_Pos & Chr(10) & _
"Y Position is : " & Hold.Y_Pos
End Sub
' Routine to set cursor position
Sub Set_Cursor_Pos()
' Looping routine that positions the cursor
For x = 1 To 480 Step 20
SetCursorPos x, x
For y = 1 To 40000: Next
Next x
End Sub
Click anywhere inside the text of the Get_Cursor_Pos routine and press the F5 key to run the Get_Cursor_Pos macro.
You will get a message box displayed with the coordinates of the current position of the mouse pointer.
Click anywhere inside the text of the Set_Cursor_Pos routine and press the F5 key to run the Set_Cursor_Pos macro.
The cursor will move diagonally down across the screen.
Ciao e grazie, a presto
Claudio