[英]VBA- A Timer Function, with Step by Step Capturing the elapsed times
我一直在寻找一种计时器功能,该功能可以轻松地嵌入到我的课本中,向我展示每个步骤需要多少秒。 我使用常规的debug.print和几个变量来执行此操作,这使我的代码变得繁忙,并且也很难从最后记录的步骤中减去新计时器,这也是多余的。 我正在寻找一个函数来捕获每个步骤花费的时间,并且还从第一步中找出总经过的时间。
这是我为此目的开发的。 您必须声明“ Scripting.Dictionary”类型的公共对象,并且还要将长变量声明为ti。
Public d As Object, ti as long
在调用该函数之前,先执行以下步骤:
Set d = CreateObject("Scripting.Dictionary")
如果已将Microsoft脚本运行时添加到库中,则可以使用早期绑定。 您的声明如下:
Dim d As New Scripting.Dictionary, ti as long
无论如何,这里是:
标题是一个字符串,用于提示或标记代码中的阶段/步骤。
对于该函数的第一个实例,Newstart应该设置为TRUE。
如果您希望到该阶段为止的总经过时间,NeedTotal应该设置为true。
Public Function gettimer(Optional ByVal Title As String, _
Optional ByVal Newstart As Boolean, _
Optional ByVal NeedTotal As Boolean)
If Newstart = True Or ti = 0 Then
ti = 0
d("T0") = Timer
gettimer = ti & vbTab & vbTab & "0.00" & vbTab & vbTab & "Start @ " _
& Format(Time, "h:mm:ss") & vbTab & Title
Else
gettimer = ti & vbTab & vbTab & Format(Round(Timer - d("T" & ti - 1), 2), "0.00") _
& vbTab & vbTab & Title
d("T" & ti) = Timer
End If
If NeedTotal Then
gettimer = gettimer & vbTab & vbTab & vbTab & "Time elapsed from the start = " _
& vbTab & Round(d("T" & ti) - d("T0"), 4)
End If
ti = ti + 1
Debug.Print gettimer
End Function
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.