共用方式為


物件變數或未設定區塊變數

正在參考無效的物件變數。 此錯誤可能會因為數個原因而發生:

  • 未指定類型,就會宣告變數。 如果未指定類型來宣告變數,則預設為 類型 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 中已不再有效。

更正這個錯誤

  1. 將下列程式代碼新增至檔案開頭,以設定 Option StrictOn

    Option Strict On
    

    當您執行專案時,編譯程式錯誤會出現在 [ 錯誤清單 ] 中,用於未指定任何類型的變數。

  2. 如果您不想要啟用 Option Strict,請在程式代碼中搜尋未指定類型的任何變數(Dim x 而非 Dim x As String),並將預期的類型新增至宣告。

  3. 請確定您未參考已設定為 Nothing的物件變數。 搜尋您的程式代碼中的 關鍵字 Nothing,並修改您的程式代碼,直到參考物件之後,才會將 物件設定為 Nothing

  4. 在您存取數位變數之前,請確定任何數位變數都已維度化。 當您第一次建立陣列時,您可以指派維度(Dim x(5) As String 而不是 Dim x() As String),或使用 ReDim 關鍵詞來設定陣列的維度,然後再進行存取。

  5. 執行語句進入點,確定您的 With 區塊已 With 初始化。

另請參閱