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

时间:2015-07-29 12:49:14

标签: vba type-mismatch ontime

我一直在使用以下代码获得类型不匹配错误,但我无法弄清楚原因。当调试器给我这个错误时,我按下继续,它会按原样移动。所以看起来代码有效。那么为什么要首先抛出这个错误呢?!

Sub Record()

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

End Sub

编辑:

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

1 个答案:

答案 0 :(得分:4)

你在00:00之后错过冒号:

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

它不会导致类型不匹配'错误,但它会使您的功能以意想不到的方式工作。

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

在这种情况下,表达式TimeValue("00:00:" & (60 - Second(Now)))返回" 00:00:60"这不是一个合适的时间格式。

以下是解决此问题的方法:

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