龙空技术网

Excel VBA|访问与对象无关连的事件:OnTime和OnKey

小智雅汇 308

前言:

当前兄弟们对“vba键盘事件keydown”大约比较着重,看官们都需要剖析一些“vba键盘事件keydown”的相关内容。那么小编也在网上搜集了一些关于“vba键盘事件keydown””的相关资讯,希望我们能喜欢,看官们一起来学习一下吧!

Excel VBA事件一般都是与对象(Application、Workbook、Sheet等)相关连的,Excel VBA也可以访问与对象无关连的事件:OnTime和OnKey。

1 OnTime事件

OnTime事件在一天中的某特定时刻发生:

 Dim NextTick As DateSub UpdateClock()' Updates cell A1 with the current time ThisWorkbook.Sheets(1).Range("A1") = Time' Set up the next event five seconds from now NextTick = Now + TimeValue("00:00:05") Application.OnTime NextTick, "UpdateClock"End SubSub StopClock()' Cancels the OnTime event (stops the clock) On Error Resume Next Application.OnTime NextTick, "UpdateClock", , FalseEnd Sub

也可以是某个日期的某个时刻:

Application.OnTime DateSerial(2019,9,1)+TimeValue("00:00:01"), "过程名"

2 OnKey事件

在工作时,Excel会始终监视用户输入的内容。因此,可以设定按键或按键组合,当其按下时,会执行特定过程(相当于宏的快捷键指定)。(这些按键不被识别的唯一情况是正在输入一个公式或使用对话框时)

	Sub PressKeytoRun()	MsgBox"按下Ctrl+D后将执行程序「testFullScreen」"	Application.OnKey"^{d}","testFullScreen" '前面是按钮,后面是过程名	End Sub	Sub ResetKey()	 MsgBox "恢复原来的按键状态"	 Application.OnKey "^{d}" '后面没有过程名,表示取消OnKey事件	End SubSub testFullScreen() 'OnKey事件对应的过程 MsgBox "运行后将Excel的显示模式设置为全屏幕" Application.DisplayFullScreen = True MsgBox "恢复为原来的状态" Application.DisplayFullScreen = FalseEnd Sub

Onkey方法的作用主要是指定特定的键,当按下指定的键时运行相应的宏程序,或者按下指定的键时,使Excel屏蔽特定的功能。

或者:

Option ExplicitSub Setup_OnKey() Application.OnKey "{PgDn}", "PgDn_Sub" '前面是按钮,后面是过程名 Application.OnKey "{PgUp}", "PgUp_Sub" MsgBox "PgUp and PgDown have been re-mapped."End SubSub Cancel_OnKey() Application.OnKey "{PgDn}" '后面没有过程名,表示取消OnKey事件 Application.OnKey "{PgUp}" MsgBox "PgUp and PgDown have been restored to normal."End SubSub PgDn_Sub() 'OnKey事件对应的过程 On Error Resume Next ActiveCell.Offset(1, 0).ActivateEnd SubSub PgUp_Sub() 'OnKey事件对应的过程 On Error Resume Next ActiveCell.Offset(-1, 0).ActivateEnd Sub

注意与SendKeys区分:

	Sub SendKeysSample()	 Application.SendKeys ("%fx")	End Sub

本示例使用SendKeys方法退出Excel,若未保存,则会弹出提示对话框并让用户作出相应的选择。SendKeys方法的作用是摸拟键盘输入,如例中的“%fx”表示在Excel中同时按下Alt、F和X三个键。

-End-

标签: #vba键盘事件keydown