【发布时间】:2019-12-29 05:39:00
【问题描述】:
我正在尝试清理一些记录的宏,并想测试我的优化是否真的加快了速度。我想添加一个宏计时器来测试,但理想情况下我会将它添加为一组两个公共函数(),而不是在代码中。
当代码无法调用 time1 变量时,就会出现问题。我认为有一种方法可以将第一次作为常量,但我不确定如何
当我尝试将“dim timer1”更改为“const timer1”时,我收到一个我无法解决的错误。我会以错误的方式解决这个问题吗?我是否需要放弃将其作为函数的想法?
Sub timertestSub()
Dim time1 As Double
Dim time2 As Double
Dim totaltime As String
time1 = Timer()
Application.Wait Now + TimeValue("00:00:10")
time2 = Timer()
totaltime = Format((time2 - time1) / 86400, "hh:mm:ss")
MsgBox "code ran in " & totaltime
End Sub
Function startTime()
Dim time1 As Double
time1 = Timer()
Debug.Print "time1 is: " & time1
End Function
Function endTIme()
Dim time2 As Double
Dim totaltime As Double
'confirm orig variable
Debug.Print "time1 recalled as: " & time1
time2 = Timer()
Debug.Print "time2 is: " & time2
totaltime = (time2 - time1)
Debug.Print "TotalTime is: " & totaltime
MsgBox "code ran in " & Format(totaltime / 86400, "hh:mm:ss")
End Function
Sub timertestFunction()
Call startTime
Application.Wait Now + TimeValue("00:00:10")
Call endTIme
End Sub
子 timertestSub() 按预期工作,但子 timertestFunction() 丢失了 time1 变量;所以最终的输出就是当前时间
尝试将代码从 dim timer1 as double 变为 const timer1 as double 也会给我错误。
【问题讨论】:
-
将其定义为
Static变量。 -
你没有向函数传递任何东西,也没有从你的函数中返回任何东西。
-
这是个好主意,但它给出了相同的结果。就像静态变量也被第一个函数结束时忘记了
-
我刚刚运行了您的代码,没有任何问题 - 但是“尝试将代码从
dim timer1 as double转换为const timer1 as double”意味着您的原始代码(不是此处提供的代码)中存在拼写错误模块顶部的Option Explicit将浮出水面。 -
@chrisneilsen 你能解释一下你的意思吗?
标签: excel vba function timer public