加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

vba键盘事件

(2013-12-22 20:50:19)
标签:

excel

vba

键盘

按下那个键

响应

it

分类: IT

如果你确实想在excel中捕捉到键盘事件,例如你想当按下鼠标左键+ctrl时,出现你想要的结果,你需要这样做才可以.

首先在模块中写一段程式,用于判断在按下鼠标左键同时再按下那个ctrl键(键盘),keys()及数字代表的键,已经在下面列出.

 

Sub 键盘()
Dim keys(0 To 255) As Byte
GetKeyboardState keys(0)
If keys(17) > 127 Then
tx1 = i: tx2 = j
If Range(ar1).Columns.Count > 1 Or Range(ar1).Rows.Count > 1 Or Range(ar2).Columns.Count > 1 Or Range(ar2).Rows.Count > 1 Then tx1 = "": tx2 = ""
If fl = False Then fl = True: 交换单元格.Label1.Caption = ar1 & " = " & tx1 Else Range(ar1) = j: Range(ar2) = i: fl = False: 交换单元格.Label2.Caption = ar2 & " = " & tx2: 交换单元格.CommandButton1.Caption = "已交换": 交换单元格.CommandButton2.Enabled = True

End If
End Sub

 

在工作表改变事件中写下下面程式:

Private Sub worksheet_SelectionChange(ByVal Target As Range)
 ar2 = "a2"
If fl = False Then i = Target: ar1 = Target.Address Else j = Target: ar2 = Target.Address
键盘
End Sub

keycode()括号中的数字为代码,代表=后面的按键

keycode(8)=BackSpace

keycode(9)=Tab
keycode(12)=Clear
keycode(13)=Enter
keycode(16)=Shift_L
keycode(17)=Control_L
keycode(18)=Alt_L
keycode(19)=Pause
keycode(20)=Caps_Lock
keycode(27)=Escape
keycode(32)=space
keycode(33)=Prior
keycode(34)=Next
keycode(35)=End
keycode(36)=Home
keycode(37)=Left
keycode(38)=Up
keycode(39)=Right
keycode(40)=Down
keycode(41)=Select
keycode(42)=Print
keycode(43)=Execute
keycode(45)=Insert
keycode(46)=Delete
keycode(47)=Help
keycode(65)=a
keycode(66)=b
keycode(67)=c
keycode(68)=d
keycode(69)=e
keycode(70)=f
keycode(71)=g
keycode(72)=h
keycode(73)=i
keycode(74)=j
keycode(75)=k
keycode(76)=l
keycode(77)=m
keycode(78)=n
keycode(79)=o
keycode(80)=p
keycode(81)=q
keycode(82)=r
keycode(83)=s
keycode(84)=t
keycode(85)=u
keycode(86)=v
keycode(87)=w
keycode(88)=x
keycode(89)=y
keycode(90)=z
keycode(96)=KP_0
keycode(97)=KP_1
keycode(98)=KP_2
keycode(99)=KP_3
keycode(100)=KP_4
keycode(101)=KP_5
keycode(102)=KP_6
keycode(103)=KP_7
keycode(104)=KP_8
keycode(105)=KP_9
keycode(106)=KP_Multiply
keycode(107)=KP_Add
keycode(108)=KP_Separator
keycode(109)=KP_Subtract
keycode(110)=KP_Decimal
keycode(111)=KP_Divide
keycode(112)=F1
keycode(113)=F2
keycode(114)=F3
keycode(115)=F4
keycode(116)=F5
keycode(117)=F6
keycode(118)=F7
keycode(119)=F8
keycode(120)=F9
keycode(121)=F10
keycode(122)=F11
keycode(123)=F12
keycode(124)=F13
keycode(125)=F14
keycode(126)=F15
keycode(127)=F16
keycode(128)=F17
keycode(129)=F18
keycode(130)=F19
keycode(131)=F20
keycode(132)=F21
keycode(133)=F22
keycode(134)=F23
keycode(135)=F24
keycode(136)=Num_Lock
keycode(137)=Scroll_Lock
keycode(187)=acute
keycode(188)=comma
keycode(189)=minus
keycode(190)=period
keycode(192)=numbersign
keycode(210)=plusminus
keycode(212)=copyright
keycode(213)=guillemotleft
keycode(214)=masculine
keycode(215)=ae
keycode(216)=cent
keycode(217)=questiondown
keycode(218)=onequarter
keycode(220)=less
keycode(221)=plus
keycode(227)=multiply
keycode(228)=acircumflex
keycode(229)=ecircumflex
keycode(230)=icircumflex
keycode(231)=ocircumflex
keycode(232)=ucircumflex
keycode(233)=ntilde
keycode(234)=yacute
keycode(235)=oslash
keycode(236)=aring
keycode(237)=ccedilla
keycode(238)=thorn
keycode(239)=eth
keycode(240)=diaeresis
keycode(241)=agrave
keycode(242)=egrave
keycode(243)=igrave
keycode(244)=ograve
keycode(245)=ugrave
keycode(246)=adiaeresis
keycode(247)=ediaeresis
keycode(248)=idiaeresis
keycode(249)=odiaeresis
keycode(250)=udiaeresis
keycode(251)=ssharp
keycode(252)=asciicircum
keycode(254)=Mode_switch

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有