Variant只能接受具有有效VarType的資料指派。 此錯誤發生的原因與解決方案如下:
您嘗試傳遞固定長度字元 串的數 組。 將單一固定長度字串指派給 Variant時,它會強制轉為可變長度字串,但無法針對固定長度字串的陣列執行此動作。
如果您必須傳遞陣列,請使用 迴圈將陣列的個別元素指派給可變長度字串之暫存陣列的專案。 然後,您可以將陣列指派給變數,並使用 Erase 解除配置暫存陣列。 不過,您無法使用 Erase解除配置固定大小的陣列。
您嘗試將固定長度字串或 使用者定義型別 傳遞給 VarType 函式或 TypeName 函式。
您嘗試將使用者定義的類型指派給 Variant 變數。 雖然您無法將使用者定義型別的整個 變數 直接指派給 Variant,但您可以使用 Array 函式,將使用者定義型別變數的個別元素指派給 Variant。 這會產生包含變體陣列的 Variant 。 此變體陣列中每個元素的 VarType 會對應至使用者定義型別中每個專案的原始類型。
您嘗試在需要Variant自變量的程式調用中,將固定長度字串或使用者定義型別的陣列當做引數傳遞。 請注意,每當程式晚期繫結時,也就是當呼叫必須在 執行時間建構時,所有引數都必須傳遞為 Variant 類型。 例如,下列代碼會造成此錯誤:
Dim MyForm As Object ' Because MyForm is Object, binding is late. Set MyForm = New Form1 Dim StringArray(10) As String * 12 ' The next line generates the error. MyForm.MyProc StringArray
針對字串陣列,使用迴圈將陣列的每個個別成員指派給可變長度字串的暫存陣列。 然後,您可以將該陣列指派給 Variant ,以傳遞至程式。 針對使用者定義型別的陣列,您可以使用 Array 函式,將使用者定義型別變數的個別元素指派給 Variant。 這會產生包含變體陣列的 Variant 。 此變體陣列中每個元素的 VarType 會對應至使用者定義型別中每個專案的原始類型。
如需詳細資訊,請選取有疑問的項目並按 F1 (在 Windows 中) 或 HELP (在 Macintosh 上)。
支援和意見反應
有關於 Office VBA 或這份文件的問題或意見反應嗎? 如需取得支援服務並提供意見反應的相關指導,請參閱 Office VBA 支援與意見反應。