了解範圍和可見度
範圍是指 變數、 常數或 程式 的可用性,以供另一個程式使用。 有三個範圍層級: 程式層級、私人 模組層級和公用模組層級。
當您宣告變數時,您會決定變數的範圍。 建議您明確宣告所有變數,以避免不同範圍的變數之間發生命名衝突錯誤。
程式層級範圍
程式外部看不到程式內定義的變數或常數。 只有包含變數宣告的程式可以使用它。 在下列範例中,第一個程式會顯示包含字串的消息框。 第二個程式會顯示空白消息框,因為變數是第一個程式的局部變數。
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
注意事項
標準模組或類模組中的公用程式可供任何參考專案使用。 若要將模組中所有程式的範圍限制為目前的專案,請將 Option Private Module 語句新增至模組的宣告區段。 公用變數和程式仍可供目前專案中的其他程式使用,但無法參考專案。
公用模組層級範圍
如果您將模組層級變數宣告為公用,該專案中的所有程式都可以使用該變數。 在下列範例中,字串變數可供專案中任何模組中的任何程式使用。
' Include in Declarations section of module.
Public strMsg As String
所有程式預設為公用,但事件程式除外。 當 Visual Basic 建立事件過程時,會在程式宣告之前自動插入 Private關鍵詞。 對於所有其他程式,如果您不想公開程式,則必須使用 Private 關鍵詞明確宣告程式。
使用參考項目的標準模組或類模組中定義的公用程式、變數和常數。 不過,您必須先設定其定義所在項目的參考。
在標準或類模組以外的定義公用程式、變數和常數,例如 表單模組 或報表模組,無法參考專案,因為這些模組是其所在專案私用的。
另請參閱
支援和意見反應
有關於 Office VBA 或這份文件的問題或意見反應嗎? 如需取得支援服務並提供意見反應的相關指導,請參閱 Office VBA 支援與意見反應。