ByRef 引數類型不符
預設會傳遞 ByRef 的引數 (透過參考),預期在程序中必須具備精確的資料類型。 此錯誤發生的原因與解決方案如下:
您傳遞的某個類型引數,無法強制型轉給預期的類型。
例如,如果您在預期為 Long 時嘗試傳送 Integer 變數,便會發生此錯誤。 如果想要發生強制型轉,則即使它會造成資訊遺失,您仍可以在其自己的一組括號中傳遞引數。
例如,若要將 Variant 引數
MyVar
傳遞至預期為 Integer 的程序,您可以如下所示撰寫呼叫:Dim MyVar MyVar = 3.1415 Call SomeSub((MyVar)) Sub SomeSub (MyNum As Integer) MyNum = MyNum + MyNum End Sub
將引數放在其自己的一組括號中,會強制將它評估為運算式。 在此評估期間,數字的小數部分會四捨五入 (非截斷),以讓它符合預期的引數類型。 評估的結果會放置在暫存位置中,而程序收到暫存位置的參考。 因此,原始的
MyVar
會保留其值。注意事項
若不指定變數的類型,則變數會使用預設的類型 Variant。 這並不總是明顯的。 例如,下列程式碼會宣告兩個變數,第一個
MyVar
是 Variant,第二個AnotherVar
是 Integer。Dim MyVar, AnotherVar As Integer
如需詳細資訊,請選取有疑問的項目並按 F1 (在 Windows 中) 或 HELP (在 Macintosh 上)。
支援和意見反應
有關於 Office VBA 或這份文件的問題或意見反應嗎? 如需取得支援服務並提供意見反應的相關指導,請參閱 Office VBA 支援與意見反應。