Excel VBA – kursor myszy “hand” dla linku
W poprzednim wpisie pokazałem prosty (w dodatku nie mój, co wskazałem w źródle) sposób na utworzenie linku z kontrolki Label
. Ale co to za link, który po najechaniu nań myszą nie zmienia jej kursora na klasyczną “rączkę”, do której wszyscy przywykliśmy?
Jak się okazuje, nie ma możliwości pokazania takiego kursora (przynajmniej do wersji Office 2003, na jakiej pracuję) z poziomu właściwości MousePointer
obiektu. Ale mimo wszystko da się, jak wykazuje GHolden w wątku traktującym właśnie o tym problemie.
Wszystko, co należy zrobić, to:
- W module (WAŻNE: w module, a nie w kodzie naszej
UserForm
) zamieścić deklaracje:
Public Const IDC_HAND = 32649& Public Const IDC_ARROW = 32512& Public Declare Function LoadCursor Lib "user32" Alias "LoadCursorA" (ByVal hInstance As Long, ByVal lpCursorName As Long) As Long Public Declare Function SetCursor Lib "user32" (ByVal hCursor As Long) As Long Public Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long |
- Zdarzenie
MouseMove
interesującej nas kontrolkiLabel
oprogramować następująco:
Private Sub Label1_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single) Dim hCur As Long hCur = LoadCursor(0, IDC_HAND) If (hCur > 0) Then SetCursor hCur End If End Sub |
Przetestowane, działa. Powodzenia!
Dobre, dzięki bardzo!!!