一般而言,變數在宣告該變數的範圍內是可見或可供參照的。 在某些情況下,變數的 存取層級 可能會影響其範圍。
如需詳細資訊,請參閱 Visual Basic中的範圍。
區塊或程式層級的範圍
若要讓變數只在區塊內顯示
將變數的 Dim 語句放在該區塊的起始和終止宣告語句之間,例如,在迴圈的
For和Next語句之間For。您只能從 區塊內參考變數。
若要讓變數只在程式內顯示
將
Dim變數的語句放在程式內,但位於任何區塊之外(例如With...End With區塊)。您只能從程式內參考變數,包括包含在程式中的任何區塊內。
在模組或命名空間層級的範圍
為了方便起見,單一詞彙 模組層級 同樣適用於模組、類別和結構。 模組層級變數的存取層級會決定其範圍。 包含模組、類別或結構的命名空間也會影響範圍。
若要讓變數在整個模組、類別或結構中可見
若要讓變數在整個命名空間中顯示
將
Dim變數的語句放在模組、類別或結構內,但放在任何程式之外。在語句中包含 Friend或
Dim關鍵詞。您可以從包含模組、類別或結構之命名空間中的任何位置參考變數。
範例
下列範例會在模組層級宣告變數,並將其可見度限制為模組內的程序代碼。
Module demonstrateScope
Private strMsg As String
Sub initializePrivateVariable()
strMsg = "This variable cannot be used outside this module."
End Sub
Sub usePrivateVariable()
MsgBox(strMsg)
End Sub
End Module
在上述範例中,模組 demonstrateScope 中定義的所有程式都可以參考 String 變數 strMsg。
usePrivateVariable呼叫程式時,它會在對話框中顯示字串變數strMsg的內容。
根據之前範例的以下更改,字串變數 strMsg 可以在其宣告命名空間內的任何程式碼位置被引用。
Public strMsg As String
健全的程式設計
變數範圍越窄,誤用到同名變數的可能性就越低。 您也可以將參考比對的問題降到最低。
.NET Framework 安全性
變數範圍越窄,惡意代碼可能會不當使用的可能性較小。