VBA - 显示子程序运行所需的时间

标签 vba excel

我尝试使用以下代码来显示一系列命令运行所需的时间。在此示例中,我希望它返回“10”或类似的内容。

相反,它会返回:

enter image description here

发生了什么事以及如何正确格式化它?

Sub timeyWimey()

    Dim t1 As Date
    Dim t2 As Date
    Dim timeTaken As Date

        t1 = Now()
        Application.Wait (Now + TimeValue("0:00:10"))
        t2 = Now()

        timeTaken = t2 - t1

        MsgBox timeTaken

End Sub

编辑:

在一些很好的答案之后的最终代码:

Sub timeyWimey()

    'Dim t1 As Double
    'Dim t2 As Double


        t1 = Now()
        Application.Wait (Now + TimeValue("0:00:10"))
        t2 = Now()

        timeTaken = t2 - t1

        MsgBox Format(timeTaken, "nn:ss.000")

End Sub

结果:

enter image description here

嘭!问题解决了!感谢大家的帮助!

最佳答案

日期在 MS Access 和 MS Excel 中以数值形式存储。因此,如果在直接窗口 (Ctrl+G) 中输入 ?Cdbl(now()),您将得到如下数字:42195.5204050926

整数表示自 1899 年 12 月 30 日以来已经过去了多少天,小数表示当天已经过去了多少天。

所以在你的代码中你基本上是这样说的:

timeTaken = 42195.5222337963  - 42195.5204050926

在这个例子中,我只是检查了一次Now(),然后在几分钟后再次检查。所以我最终得到了0.0018287037

现在,如果我使用 Date 变量(如您的示例中所示)来显示它,我基本上是在说0.0018287037现在是什么时间这是 1899 年 12 月 30 日凌晨 12:02:38。

您可以通过返回直接窗口并输入 ?cdate(0.0018287037) 直观地看到这一点,您将得到如下结果:12:02:38 AM。要更进一步,您可以输入 ?cdate(1.0018287037),您将得到一个结果:1899-12-31 12:02:38 AM

因此,根据您的情况,您只需更改即可:

MsgBox timeTaken

致:

MsgBox Format(timeTaken, "nn:ss")

注意:我没有注意到屏幕截图中写着“Excel”,尽管这个答案应该仍然有效。

关于VBA - 显示子程序运行所需的时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31344228/

相关文章:

html - Excel VBA 抓取在 HTML 文档中找到的 CSS 元素

vba - 使用 xlsm 文件等模板创建文件夹和新的 *.xlsx 文件

php - 想要使用 php 将带有格式和网格的完整 html 表格数据导出到 excel 的单个单元格

excel - 如何根据另一个单元格中的数据在 Excel 中创建 URL?

vba - 使用输入框存储唯一值

python - 在 pyWin32 中设置自动过滤器的条件

excel - 如何将数据粘贴到第一个空行的列中?

regex - VBA正则表达式匹配时间范围,如 "1:30pm - 12:00am"

VBA 应用程序崩溃且没有错误消息 - 单步执行程序时有效

excel - ThisWorkbook.FullName 在与 OneDrive 同步后返回 URL。我想要磁盘上的文件路径