了解範圍和可見度

範圍是指 變數數或 程式 的可用性,以供另一個程式使用。 有三個範圍層級: 程式層級、私人 模組層級和公用模組層級。

當您宣告變數時,您會決定變數的範圍。 建議您明確宣告所有變數,以避免不同範圍的變數之間發生命名衝突錯誤。

程式層級範圍

程式外部看不到程式內定義的變數或常數。 只有包含變數宣告的程式可以使用它。 在下列範例中,第一個程式會顯示包含字串的訊息方塊。 第二個程式會顯示空白訊息方塊,因為變數是第一個程式的區域變數。

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 支援與意見反應