为什么我会收到 VBA 类型不匹配错误?

Why am I getting a VBA Type Mismatch Error?

我不断收到以下代码的类型不匹配错误,我不明白为什么。当调试器给我这个错误时,我按继续,它会按原样移动。所以看起来代码有效。那么为什么首先抛出这个错误呢?!

Sub Record()

    ' ...
    Application.OnTime Now + TimeValue("00:00:" & (60 - Second(Now))), "Record"
    ' ...

End Sub

编辑:

修复了冒号,但问题仍然存在。问题是“00:00:60”不是有效数字,因为您不能有 60 秒。应该是“00:01:00”。

你在 00:00:

之后漏掉了冒号
Application.OnTime Now + TimeValue("00:00:" & (60 - Second(Now))), "Record"

它不会导致 'Type mismatch' 错误,但会使您的函数以意想不到的方式工作。


您所说的错误出现在Second(Now) = 0时。

在这种情况下表达式 TimeValue("00:00:" & (60 - Second(Now))) returns "00:00:60" 这不是正确的时间格式。

此问题的解决方法如下:

Application.OnTime Now + TimeSerial(0, 0, 60 - Second(Now)), "Record"