執行時錯誤 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
引數的過程,呼叫可以成功。