专业编程基础技术教程

网站首页 > 基础教程 正文

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

ccvgpt 2024-08-02 11:54:12 基础教程 15 ℃

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

1 OnTime事件

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

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

 Dim NextTick As Date
Sub 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 Sub
Sub StopClock()
' Cancels the OnTime event (stops the clock)
 On Error Resume Next
 Application.OnTime NextTick, "UpdateClock", , False
End 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 Sub
Sub testFullScreen() 'OnKey事件对应的过程
 MsgBox "运行后将Excel的显示模式设置为全屏幕"
 Application.DisplayFullScreen = True
 MsgBox "恢复为原来的状态"
 Application.DisplayFullScreen = False
End Sub

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

或者:

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

注意与SendKeys区分:

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

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

-End-

Tags:

最近发表
标签列表