VBA-定时器功能,逐步捕获经过的时间

时间:2018-05-02 16:41:47

标签: excel-vba function timer vba excel

我一直在寻找一个可以轻松嵌入到我的指针中的计时器功能,以显示每个步骤需要多少秒。我正在使用常规的debug.print和几个变量使我的代码忙,并且很难从最后记录的步​​骤中减去新的计时器也是多余的。我正在寻找一个函数来捕获每个步骤的时间,并找出从第一步开始的总耗用时间。

1 个答案:

答案 0 :(得分:0)

这是我为此目的而开发的内容。你必须声明一个公共对象" Scripting.Dictionary"类型和长变量为ti。

晚期绑定:

Public d As Object, ti as long
在调用函数之前,

并在一个程序中使用您的程序:

Set d = CreateObject("Scripting.Dictionary")

早期绑定

如果已将Microsoft Scripting Runtime添加到库中,则可以使用早期绑定。您的声明如下:

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