目录:
视频: Excel 基礎教學 01:Excel 入門 2024
您可以在Excel 2016的VBA编程中使用两种不与对象关联的事件类型:时间和按键。由于时间和按键不与特定的对象(例如工作簿或工作表)关联,因此您可以在正常的VBA模块中编程这些事件。
OnTime事件
OnTime事件发生在一天的特定时间。下面的示例演示如何让Excel执行一个过程,当3 p。米事件发生。在这种情况下,机器人的声音告诉你醒来,伴随着一个消息框:
<! --1 - >Sub SetAlarm()应用程序。 OnTime 0. 625,“DisplayAlarm”End Sub Sub DisplayAlarm()Application。言语。说话(“嗨,醒来”)MsgBox“你的下午休息时间了! “End Sub
在这个例子中,使用Application对象的OnTime方法。该方法有两个参数:时间(0.625或3:00)和发生时间事件(DisplayAlarm)时要执行的Sub过程的名称。
<! - 2 - >如果你的工作经常被忘记会议和约会,这个过程是非常有用的。只需设置一个OnTime事件来提醒自己。
大多数人发现很难用Excel编号系统来思考时间。因此,您可能需要使用VBA TimeValue函数来表示时间。 TimeValue将看起来像时间的字符串转换为Excel可以处理的值。下面的语句显示了一个更简单的方法来编程一个3 p的事件。米:
中的应用。 OnTime TimeValue(“3:00:00 pm”),“DisplayAlarm”
如果你想安排一个相对于当前时间的事件(例如,从现在起20分钟),你可以使用如下语句: 应用程序。 OnTime Now + TimeValue(“00:20:00”),“DisplayAlarm”
您还可以使用OnTime方法在特定的一天运行VBA过程。您必须确保您的计算机始终处于运行状态,并且该过程的工作簿保持打开状态。以下语句在5 p处运行DisplayAlarm过程。米于2016年12月31日:
申请。 OnTime DateValue(“12/31/2016 5:00 pm”),“DisplayAlarm”
这个特定的代码行可以派上用场,告诫你需要回家准备迎接除夕庆祝活动。
这是另一个使用OnTime事件的例子。执行UpdateClock过程将时间写入单元格A1,并在五秒钟后编写另一个事件。此事件重新运行UpdateClock过程。最终结果是单元格A1每五秒更新一次当前时间。要停止事件,请执行StopClock过程(取消事件)。请注意,NextTick是一个模块级变量,用于存储下一个事件的时间。
Dim NextTick As Date Sub UpdateClock()'用当前时间ThisWorkbook更新单元格A1。片材(1)。范围(“A1”)=时间“从现在起五秒钟设置下一个事件NextTick = Now + TimeValue(”00:00:05“)应用程序。 OnTime NextTick“UpdateClock”End Sub Sub StopClock()取消OnTime事件(停止时钟)On Error Resume Next Application。 OnTime NextTick,“UpdateClock”,False End Sub
即使在工作簿关闭后,OnTime事件仍然存在。换句话说,如果关闭工作簿而不运行StopClock过程,工作簿将在五秒内重新打开(假定Excel仍在运行)。要防止这,请使用包含以下语句的Workbook_BeforeClose事件过程:
Call StopClock
OnTime方法有两个附加参数。如果您打算使用此方法,则应参阅帮助系统以获取完整的详细信息。
如果你想看到一个相当复杂的应用程序,看看这个模拟时钟应用程序。钟面实际上是一个图表,图表每秒更新一次以显示一天的时间。没用,但有趣。一个模拟时钟应用程序。
按键事件
在您工作时,Excel不断监视您输入的内容。正因为如此,你可以设置一些按键或组合键来执行一个程序。下面是一个重新分配PgDn和PgUp键的示例:
Sub Setup_OnKey()Application。 OnKey“{PgDn}”,“PgDn_Sub”应用程序。 OnKey“{PgUp}”,“PgUp_Sub”End Sub Sub PgDn_Sub()On Error Resume Next ActiveCell。偏移(1,0)。激活结束Sub Sub PgUp_Sub()错误恢复下一个ActiveCell。偏移量(-1,0)。 Activate End Sub
通过执行Setup_OnKey过程设置OnKey事件后,按下PgDn将向下移动一行。按PgUp可以向上移动一行。
请注意,键代码括在括号中,而不是括号中。有关键盘代码的完整列表,请查阅帮助系统。搜索
OnKey。
在这个例子中,On Error Resume Next用于忽略所有生成的错误。例如,如果活动单元格位于第一行,则尝试向上移动一行会导致可安全忽略的错误。如果图表工作正常,则没有活动的单元格。 执行以下例程,取消OnKey事件:
Sub Cancel_OnKey()Application。 OnKey“{PgDn}”应用程序。 OnKey“{PgUp}”End Sub
使用空字符串作为OnKey方法的第二个参数,
不是
取消OnKey事件。相反,它导致Excel简单地忽略击键。例如,以下语句告诉Excel忽略Alt + F4。百分号表示Alt键: 应用程序。OnKey“%{F4}”,“” 尽管可以使用OnKey方法为执行宏指定快捷键,但应该使用“宏选项”对话框来执行此任务。
如果关闭包含代码的工作簿并保持Excel打开,则不会重置OnKey方法。因此,按快捷键将导致Excel自动打开与宏的文件。为防止发生这种情况,应在Workbook_BeforeClose事件代码中包含代码以重置OnKey事件。