对于我们这些深入研究VB.NET的人来说,回到VB6的旅程可能是一次令人困惑的旅行。在VB6中使用计时器就是这样。同时,向代码中添加定时进程对于VBA宏的新用户来说并不明显。
编写Word VBA宏以自动计时用Word编写的测试是使用计时器的典型原因。另一个常见的原因是查看代码的不同部分占用了多少时间,这样您就可以对缓慢的部分进行优化。有时,您可能希望在计算机似乎处于空闲状态时查看应用程序中是否发生了任何事情,这可能是一个安全问题。计时器可以做到这一点。
您可以通过编写OnTime语句来启动计时器。此语句是在Word和Excel中实现的,但根据所使用的语法不同,它有不同的语法。Word的语法为:
表达式.OnTime(时间、名称、公差)
Excel的语法如下所示:
expression.OnTime(最早的时间、过程、最晚的时间、时间表)
两者都有共同的第一个和第二个参数。第二个参数是达到第一个参数中的时间时运行的另一个宏的名称。实际上,编写此语句就像用VB6或VB.NET术语创建事件子例程一样。事件正在到达第一个参数中的时间。事件子例程是第二个参数。
这与VB6或VB.NET中的编码方式不同。首先,第二个参数中命名的宏可以在任何可访问的代码中。在Word文档中,Microsoft建议将其放入普通文档模板中。如果将其放在另一个模块中,Microsoft建议使用完整路径:Project.module.Macro。
表达式通常是应用程序对象。Word和Excel文档说明,如果对话框或其他进程阻止事件宏在特定时间内运行,则第三个参数可以取消事件宏的执行。在Excel中,您可以在发生这种情况时安排新的时间。
Word中的此代码适用于希望显示测试时间已过的通知并打印测试结果的管理员。
Public Sub TestOnTime()Debug.Print“报警将在10秒后熄灭!”Debug.Print(“在OnTime之前:&;现在)alertTime=Now+TimeValue(“00:00:10”)Application.OnTime alertTime,“EventMacro”Debug.Print(“在OnTime之后:&;现在)End Sub EventMacro()Debug.Print(“执行事件宏:&;现在”)End Sub
这将在即时窗口中生成以下内容:
警报将在10秒后响起!OnTime之前:12/25/2000 7:41:23 PM OnTime之后:12/25/2000 7:41:23 PM执行事件宏:2/27/2010 7:41:33 PM
其他Office应用程序不能按时实现。对于这些,您有几个选择。首先,你可以使用Timer函数,它只返回你电脑上从午夜开始的秒数,然后自己计算,或者你可以使用WindowsAPI调用。使用Windows API调用具有比计时器更精确的优点。下面是Microsoft建议的一个例程,可以实现这一点:
私有声明函数getFrequency Lib“kernel32”\别名“QueryPerformanceFrequency”(cyFrequency作为货币)作为LongPrivate声明函数getTickCount Lib“kernel32”\别名“QueryPerformanceCounter”(cyTickCount作为货币)作为LongSub TestTimeAPICalls()Dim dTime As DoubledTime=MicroTimerDim StartTime As SingleStartTime=timer对于i=1到10000000 Dim j As Doublej=Sqr(i)NextDebug.Print(“使用的微动计时器时间:”&;微动计时器-dTime)结束子功能微动计时器()As Double“”返回秒数。Dim cyTicks1作为货币静态cyFrequency作为货币'MicroTimer=0'获取频率。如果cyFrequency=0,则getFrequency cyFrequency'Get ticks.getTickCount cyTicks1'seconds如果cyFrequency,则MicroTimer=cyTicks1/cyFrequencyEnd函数
...附件,然后将它们安全地存储在您的本地系统中。您可以使用多种方法,具体取决于您的电子邮件提供商,因此请查看下面的选项,看看适合您的方法。 ...
... 如果您希望从宏中获得更多信息,请查看我们的指南:VBA初学者编程和为宏构建工具栏。在Excel中为宏使用VBA会增加更多的功能! ...
...向您展示“开发人员”选项卡的一些实际用途,以及如何使用它们创建更多自定义的Microsoft Office文档。 ...
... 一旦您对VBA更熟悉了,您就可以用更少的时间在常规宏中完成所有可能要做的事情。结果也将更加可预测,因为你告诉Excel要做什么。一点都不含糊。 ...
...型:一种是可以通过快速记录操作来创建的宏,另一种是使用VBA来设计更高级的自动化程序的宏。在Office2016中,Excel在所有平台上使用相同的代码库。此更改将使宏更容易跨平台工作。 ...
...visualbasic编辑器中,您可以调整宏,将一个宏嵌入另一个宏中,或者创建一个子例程来逐个执行多个宏。 ...
...为了保持所有内容的一致性并避免自己的严重头痛,可以使用宏来创建进度条。使用此宏,进度条将根据演示文稿中的幻灯片数自动调整自身。 相关:宏解释:为什么Microsoft Office文件可能是危险的 首先,打开要为其创建进度条...
...启用所有宏”,因为这将使您的计算机不受来自未知源的宏中潜在恶意软件的保护。 在信任中心更改这些宏设置只会影响您当前使用的Office程序。要在Excel或PowerPoint中更改这些设置,必须打开这些程序并在其中更改设置。在Excel...
...那么有没有可能驯服它,以便在Excel完成时,您可以继续使用计算机进行其他活动?今天的超级用户Q&A帖子旨在帮助一位沮丧的读者重新掌控Excel。 今天的问答环节是由SuperUser提供的,SuperUser是Stack Exchange的一个分支,是一个...