正在參考無效的物件變數。 此錯誤可能會因為數個原因而發生:
未指定類型,就會宣告變數。 如果未指定類型來宣告變數,則預設為 類型
Object。例如,以
Dim x宣告的Object;變數類型為 以 宣告Dim x As String的變數類型會是 類型String。小提示
Option Strict語句不允許產生類型的隱含型Object別。 如果您省略類型,就會發生編譯時期錯誤。 請參閱 Option Strict 語句。您嘗試參考已設定為
Nothing的物件。您嘗試存取未正確宣告之陣列變數的專案。
例如,如果您嘗試參考陣列
products(3) = "Widget"的專案,宣告為products() As String的陣列將會觸發錯誤。 數位沒有專案,而且會被視為物件。您嘗試在區塊初始化之前存取區塊內的
With...End With程式代碼。 區塊With...End With必須藉由執行With語句進入點來初始化。
備註
在舊版的 Visual Basic 或 VBA 中,這個錯誤也是藉由將值指派給變數而觸發,而不使用 Set 關鍵詞 (x = "name" 而非 Set x = "name")。 關鍵詞 Set 在 Visual Basic .Net 中已不再有效。
更正這個錯誤
將下列程式代碼新增至檔案開頭,以設定
Option Strict為On:Option Strict On當您執行專案時,編譯程式錯誤會出現在 [ 錯誤清單 ] 中,用於未指定任何類型的變數。
如果您不想要啟用
Option Strict,請在程式代碼中搜尋未指定類型的任何變數(Dim x而非Dim x As String),並將預期的類型新增至宣告。請確定您未參考已設定為
Nothing的物件變數。 搜尋您的程式代碼中的 關鍵字Nothing,並修改您的程式代碼,直到參考物件之後,才會將 物件設定為Nothing。在您存取數位變數之前,請確定任何數位變數都已維度化。 當您第一次建立陣列時,您可以指派維度(
Dim x(5) As String而不是Dim x() As String),或使用ReDim關鍵詞來設定陣列的維度,然後再進行存取。執行語句進入點,確定您的
With區塊已With初始化。