ExcelBanter

ExcelBanter (https://www.excelbanter.com/)
-   Excel Programming (https://www.excelbanter.com/excel-programming/)
-   -   Haw can i test if CTRL is activated (hold down) in VBA (https://www.excelbanter.com/excel-programming/368778-haw-can-i-test-if-ctrl-activated-hold-down-vba.html)

excelent

Haw can i test if CTRL is activated (hold down) in VBA
 
I wana use it in a event handle like

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
if not CTRL is pressed (hold down) then exit sub ???

haw do i test for that ?

tanks in advanse

Ron de Bruin

Haw can i test if CTRL is activated (hold down) in VBA
 
Hi excelent

This in a normal module

Declare Function GetKeyState Lib "user32" _
(ByVal nVirtKey As Long) As Integer

Const VK_CONTROL As Integer = &H11 'Ctrl


Sub test()
If GetKeyState(VK_CONTROL) < 0 Then Ctrl = True Else Ctrl = False
If Ctrl = True Then
MsgBox "pressed"
Else
MsgBox "Not"
End If
End Sub



And this in the sheet module

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Call test
End Sub




--
Regards Ron de Bruin
http://www.rondebruin.nl



"excelent" wrote in message ...
I wana use it in a event handle like

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
if not CTRL is pressed (hold down) then exit sub ???

haw do i test for that ?

tanks in advanse




Tom Ogilvy

Haw can i test if CTRL is activated (hold down) in VBA
 
Here is some code to illustrate - it isn't how I would implement it, but
gives you the idea.

Declare Function GetKeyState Lib "User32" _
(ByVal vKey As Integer) As Integer

Const SHIFT_KEY = 16
Const CTRL_KEY = 17
Const ALT_KEY = 18


Sub find_key()


'Checks key states to see if both CTRL and ALT Keys are pressed
If GetKeyState(CTRL_KEY) < 0 And GetKeyState(ALT_KEY) < 0 Then
MsgBox "CTRL + ALT KEYS PRESSED"
'Checks key states to see if only CTRL key is pressed
ElseIf GetKeyState(CTRL_KEY) < 0 Then
MsgBox "CTRL KEY PRESSED"
'Checks key states to see if only ALT key is pressed
ElseIf GetKeyState(ALT_KEY) < 0 Then
MsgBox "ALT KEY PRESSED"
'Checks key states to see if only SHIFT key is pressed
ElseIf GetKeyState(SHIFT_KEY) < 0 Then
MsgBox "SHIFT KEY PRESSED"
End If


End Sub



--

Regards,

Tom Ogilvy




"excelent" wrote in message
...
I wana use it in a event handle like

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
if not CTRL is pressed (hold down) then exit sub ???

haw do i test for that ?

tanks in advanse




excelent

Haw can i test if CTRL is activated (hold down) in VBA
 
Great tanks Ron :-)

i wonder can i put this

If GetKeyState(VK_CONTROL) < 0 Then Ctrl = True Else Ctrl = False
If Ctrl = True Then
MsgBox "pressed"
Else
MsgBox "Not"
End If

in the Sheet event-module, or do i have to call it like u show it ?

and do i have to use the Declare Function too or is that just another
way to do the same ?


Tom Ogilvy

Haw can i test if CTRL is activated (hold down) in VBA
 
Private Declare Function GetKeyState Lib "user32" _
(ByVal nVirtKey As Long) As Integer

Const VK_CONTROL As Integer = &H11 'Ctrl


Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If GetKeyState(VK_CONTROL) < 0 Then Ctrl = True Else Ctrl = False
If Ctrl = True Then
MsgBox "pressed"
Else
MsgBox "Not"
End If

End Sub


all in the sheet module worked fine for me.

--
Regards,
Tom Ogilvy

"excelent" wrote in message
...
Great tanks Ron :-)

i wonder can i put this

If GetKeyState(VK_CONTROL) < 0 Then Ctrl = True Else Ctrl = False
If Ctrl = True Then
MsgBox "pressed"
Else
MsgBox "Not"
End If

in the Sheet event-module, or do i have to call it like u show it ?

and do i have to use the Declare Function too or is that just another
way to do the same ?




excelent

Haw can i test if CTRL is activated (hold down) in VBA
 
ok tanks Tom now i think i got it



All times are GMT +1. The time now is 08:04 AM.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
ExcelBanter.com