總是使用顯式選項

在 VBA 編輯器視窗中,從工具選單中選擇選項

StackOverflow 文件

然後在編輯器選項卡中,確保選中需要變數宣告

StackOverflow 文件

選擇此選項將自動將 Option Explicit 置於每個 VBA 模組的頂部。

小注意: 這對於目前尚未開啟的模組,類模組等是正確的。因此,如果你在啟用需求變數宣告選項之前已經檢視了例如 Sheet1 的程式碼,則不會新增 Option Explicit

Option Explicit 要求在使用前必須定義每個變數,例如使用 Dim 語句。如果沒有啟用 Option Explicit,VBA 編譯器將假定任何未識別的單詞為 Variant 型別的新變數,從而導致與列印錯誤相關的極難發現的錯誤。啟用 Option Explicit 後,任何無法識別的單詞都會導致丟擲編譯錯誤,表示有問題的行。

示例:

如果你執行以下程式碼:

Sub Test()
  my_variable = 12
  MsgBox "My Variable is : " & myvariable
End Sub

你將收到以下訊息:

StackOverflow 文件

你通過編寫 myvariable 而不是 my_variable 來表示錯誤,然後訊息框顯示一個空變數。如果你使用 Option Explicit,則無法執行此錯誤,因為你將收到指示問題的編譯錯誤訊息。

StackOverflow 文件

現在,如果你新增正確的宣告:

Sub Test()
  Dim my_variable As Integer
  my_variable = 12
  MsgBox "My Variable is : " & myvariable
End Sub

你將獲得一條錯誤訊息,指出 myvariable 的錯誤:

StackOverflow 文件

關於 Option Explicit 和 Arrays宣告動態陣列 )的注意事項

你可以使用 ReDim 語句在過程中隱式宣告陣列。

  • 使用 ReDim 語句時,請注意不要拼錯陣列的名稱

  • 即使模組中包含 Option Explicit 語句,也會建立一個新陣列

    Dim arr() as Long

    ReDim ar()'creates new array "ar" - "ReDimar()" acts like "Dim ar()"