- 1、本文档共4页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
VBA中检测键盘控制键
VBA中检测键盘控制键(Shift Control Alt)状态
来源:水文工具集分类:代码,?博客标签:VBA
VBA编写的程序中,经常需要提供一些功能键或者快捷键或者是辅助键,比如Shift|Control|Alt,以方便用户更方便使用你的程序。VBA中并没有相关函数来完成检测键盘控制键状态的函数,因此,必须使用Windows API函数GetKeyState。GetKeyState函数会返回某个指定按键的状态(按下或者未按下)。水文工具集提供VBA编写的3个相关函数,可以方便你在代码中使用,用以完成相关功能。
IsShiftKeyDown:检测Shift控制键状态
IsControlKeyDown:检测Control控制键状态
IsAltKeyDown:检测Alt控制键状态
上面的函数返回True或者False,当指定按键按下时返回True,而未按下时返回False。
函数的定义如下:
01.Public?Function?IsShiftKeyDown( _
02.Optional?LeftOrRightKey?As?Long?= LeftKeyOrRightKey _
03.)?As?Boolean
04.?
05.Public?Function?IsControlKeyDown( _
06.Optional?LeftOrRightKey?As?Long?= LeftKeyOrRightKey _
07.)?As?Boolean
08.?
09.Public?Function?IsAltKeyDown( _
10.Optional?LeftOrRightKey?As?Long?= LeftKeyOrRightKey _
11.)?As?Boolean
上面的函数都有一个可选的参数来指定是检测只有左边或者只有右边或者两者其一或者同时按下控制键,默认是左边右边两者其一,具体的可选参数有下面的类型:
1.Public?Const?BothLeftAndRightKeys = 0
2. BOTH left and right together
3.Public?Const?LeftKey = 1
4. LEFT key only
5.Public?Const?RightKey = 2
6. RIGHT key only
7.Public?Const?LeftKeyOrRightKey = 3
8. EITHER left or right or BOTH
当然如果加以修改,一样可以用来其它功能键。
VBA中检测键盘控制键(Shift Control Alt)状态具体源代码如下:
01.================================
02. VBA中检测键盘控制键(Shift Control Alt)状态
03.
04.?
05.================================
06.Option?Explicit
07.Option?Compare Text
08.?
09.Private?Declare?Function?GetKeyState?Libuser32?( _
10.ByVal?nVirtKey?As?Long)?As?Integer
11.?
12.Private?Const?KEY_MASK?As?Integer?= HFF80? decimal -128
13.?
14.Private?Const?VK_LSHIFT = HA0
15.Private?Const?VK_RSHIFT = HA1
16.Private?Const?VK_LCONTROL = HA2
17.Private?Const?VK_RCONTROL = HA3
18.Private?Const?VK_LMENU = HA4
19.Private?Const?VK_RMENU = HA5
20.?
21.Private?Const?VK_LALT = VK_LMENU
22.Private?Const?VK_RALT = VK_RMENU
23.Private?Const?VK_LCTRL = VK_LCONTROL
24.Private?Const?VK_RCTRL = VK_RCONTROL
25.?
26.Public?Const?BothLeftAndRightKeys = 0
27.Public?Const?LeftKey = 1
28.Public?Const?RightKey = 2
29.Public?Const?LeftKeyOrRightKey = 3?????
30.?
31.Public?Function?IsShiftKeyDown(OptionalLeftOrRightKey?
文档评论(0)