运行时错误 13 类型不匹配
不正确的代码
Public Sub DoSomething()
DoSomethingElse "42?"
End Sub
Private Sub DoSomethingElse(foo As Date)
' Debug.Print MonthName(Month(foo))
End Sub
为什么这不起作用?
VBA 正在努力将 42?
参数转换为 Date
值。当它失败时,无法执行对 DoSomethingElse
的调用,因为 VBA 不知道要传递的日期,因此它引发运行时错误 13 类型不匹配,因为参数的类型与预期类型不匹配(并且可以也不会被隐式转换。
正确的代码
Public Sub DoSomething()
DoSomethingElse Now
End Sub
Private Sub DoSomethingElse(foo As Date)
' Debug.Print MonthName(Month(foo))
End Sub
为什么这样做?
通过将 Date
参数传递给期望 Date
参数的过程,调用可以成功。