Na start - zdarzenie lewego przycisku myszy
Od kilku dni chodziło za mną, żeby zacząć zapisywać różne makra i inne pożyteczne przykłady z użytkownia Excela i VBA (głównie VBA), zanim wylecą z głowy bądź ulegną samozniszczeniu w przypadku awarii komputera.
Zastrzegam: nie jestem specjalistą w dziedzinie VBA. Programować lubię i robię to głównie hobbystycznie, a VBA zacząłem się uczyć na potrzeby aktualnej pracy - wiedzę czerpię na bieżąco w miarę potrzeb - z kursów, tutoriali i manuala.
Nie spodziewajcie się tutaj kursów czy poradników, raczej będą to zapiski dotyczące różnych problemów, które napotkałem podczas pisania makr, ewentualnie jakieś ciekawostki. Niemniej, w odnośnikach umieściłem kilka pozycji, na które warto wg mnie rzucić okiem.
Na początek, jako pierwszy problem - zdarzenie (event) kliknięcia lewego przycisku myszy na obiekcie arkusza.. no właśnie - nie ma takiego, i w tym jest problem. Jest BeforeRightClick, jest BeforeDoubleClick, ale nie ma tego nieszczęsnego lewego..
Na problem trafiłem, kiedy pisałem z nudów (ah praca ;) mini-grę w Excelu i chciałem, aby gracz sterował tylko klawiszami, a nie myszką (czyli chciałem uniknąć klikania lewym/prawym przyciskiem po komórkach). O ile prawy nie był problemem, tak z lewym musiałem pogoogle'ować. I znalazłem taki sposób oparty na zdarzeniu SelectionChange oraz funkcji GetAsyncKeyState z biblioteki user32. Przykładowy kod:
Private Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer
Sub Worksheet_SelectionChange(ByVal Target As Range)
If GetAsyncKeyState(1) Then
MsgBox ("Naciśnięto lewy przycisk myszy.")
End If
End Sub
Ot - cała filozofia. Funkcja zwraca wartość true lub false, w zależności, czy naciśnięto klawisz odpowiadający argumentowi. Jako argument podaje się kod klawisza (nie jest to kod ASCII klawiatury) lub odpowiadającą jemu stałą. W przypadku lewego przycisku jest to 1 lub vbKeyLButton, w przypadku prawego: 2 lub vbKeyRButton.
Pozostałe wartości można zobaczyć w Object Browser (naciskając F2 w edytorze VBA), w module KeyCodeConstants.
Pozostałe wartości można zobaczyć w Object Browser (naciskając F2 w edytorze VBA), w module KeyCodeConstants.
..i tak oto dokończyłem wpis sprzed prawie roku.
Trochę wstyd, mam nadzieję, że poprawię się i będę bardziej regularny ;)

Komentarze (0):
Prześlij komentarz
Subskrybuj Komentarze do posta [Atom]
<< Strona główna