範圍指的是變 數、 常數或 程序 可供其他程序使用的可用性。 有三個範疇層級: 程序層級、私人 模組層級及公共模組層級。
你在宣告變數時決定了它的作用範圍。 明確宣告所有變數是個好主意,以避免不同作用域的變數之間產生命名衝突錯誤。
程序層級範圍
在程序中定義的變數或常數,在該程序外是看不到的。 只有包含變數宣告的程序才能使用它。 在以下範例中,第一個程序顯示一個包含字串的訊息框。 第二個程序顯示空白訊息框,因為變數是第一個程序的本地變數。
Sub LocalVariable()
Dim strMsg As String
strMsg = "This variable can't be used outside this procedure."
MsgBox strMsg
End Sub
Sub OutsideScope()
MsgBox strMsg
End Sub
私人模組層級範圍
你可以在模組的宣告區段定義模組層級的變數和常數。 模組層級變數可以是公開變數或私有變數。 公開變數對 專案中所有模組中的程序皆可用;私有變數僅適用於該模組中的程序。 預設情況下,在宣告區段中以 Dim 陳述式宣告的變數會被設為私人範圍。 然而,在變數前面加上 Private 關鍵字,程式碼中的作用範圍就很明顯了。
在以下範例中,字串變數 strMsg 對模組中定義的任何程序皆可用。 當第二個程序被呼叫時,會以對話框顯示字串變數 strMsg 的內容。
' Add following to Declarations section of module.
Private strMsg As String
Sub InitializePrivateVariable()
strMsg = "This variable can't be used outside this module."
End Sub
Sub UsePrivateVariable()
MsgBox strMsg
End Sub
注意事項
標準模組或類別模組中的公開程序可供任何引用專案使用。 若要將模組中所有程序的範圍限制於目前專案,請在模組的宣告區塊新增選項 私有模組 陳述。 公開變數與程序仍可提供給現有專案中的其他程序,但不提供給參考專案。
公開模組層級範圍
如果你宣告一個模組層級變數為公開,專案中的所有程序都能使用。 在以下範例中,字串變數可被專案中任一模組中的任何程序使用。
' Include in Declarations section of module.
Public strMsg As String
所有程序預設為公開,事件程序除外。 當 Visual Basic 建立事件程序時,Private 關鍵字會自動插入於程序宣告前。 對於其他程序,若不希望程序公開,必須明確以 Private 關鍵字宣告程序。
使用標準模組或類別模組中定義的公開程序、變數和常數,這些都是參考專案的來源。 不過,你必須先設定一個指向定義它們的專案參考。
在標準或類別模組(如 表單模組 或報告模組)中定義的公開程序、變數與常數,無法被引用專案使用,因為這些模組是其所屬專案的私有。
另請參閱
支援和意見反應
有關於 Office VBA 或這份文件的問題或意見反應嗎? 如需取得支援服務並提供意見反應的相關指導,請參閱 Office VBA 支援與意見反應。