簡體   English   中英

VBA-計時器功能,可逐步捕獲經過的時間

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM