Static 陳述式
用於 程式層級 ,以宣告 變數 並配置儲存空間。 只要程式代碼正在執行,以 Static 語句宣告的變數就會保留其值。
語法
Staticvarname [ ( [ subscripts ] ) ] [ As [ New ] type ], [ varname [ ( [ subscripts ] ) ] [ As [ New ] type ]] . . 。
Static 語句語法具有下列部分:
部分 | 描述 |
---|---|
varname | 此為必要動作。 變數的名稱;遵循標準變數命名慣例。 |
下標 | 選用。 陣 列變數 的維度;最多可以宣告 60 個多個維度。
下標自變數會使用下列語法: [ lowerTo ] upper [ , [ lowerTo ] upper ] . . . . 若未在 下方明確陳述,則陣列的下限是由 OptionBase 語句所控制。 如果沒有 OptionBase 語句,則下限為零。 |
新增 | 選用。 啟用物件隱含建立的關鍵詞。 如果您在宣告物件變數時使用 New,則會在第一次參考物件時建立物件的新實例,因此您不需要使用 Set 語句來指派對象參考。 New 關鍵詞不能用來宣告任何內部數據類型的變數,也無法用來宣告相依對象的實例。 |
type | 選用。 變數的數據類型;可能是目前不支援的 Byte、 Boolean、 Integer、 Long、 Currency、 Single、 Double、 Decimal () 、 Date、 String (,適用於可變長度字符串) 、 固定長度 字元串 () 、 Object、 Variant、 使用者定義型別或 對象類型。 針對所定義的每個變數使用個別的 As類型子句。 |
註解
模組程式代碼執行之後,使用 Static 語句宣告的變數會保留其值,直到重設或重新啟動模組為止。 在 類模組中,使用 Static 語句宣告的變數會在每個類別實例中保留其值,直到該實例終結為止。 在 窗體模組中,靜態變數會保留其值,直到窗體關閉為止。
在非靜態程式中使用 Static 語句,明確宣告只在程式中可見,但其存留期與定義程式的模組相同的變數。
在程式內使用 Static 語句來宣告變數的數據類型,該變數會在過程調用之間保留其值。 例如,下列語句會宣告整數的固定大小陣列:
Static EmployeeNumber(200) As Integer
下列語句會宣告工作表新實例的變數:
Static X As New Worksheet
如果在宣告物件變數時未使用 New 關鍵詞,則必須先使用 Set 語句將參照物件的變數指派給現有的物件,才能使用它。 在指派物件之前,宣告的物件變數具有特殊值 Nothing,表示它不會參考物件的任何特定實例。 當您在宣告中使用 New 關鍵詞時,會在第一個對象參考上建立 對象的實例。
如果您未指定數據類型或物件類型,而且模組中沒有 Def類型語句,則變數預設為 Variant。
注意事項
Static 語句和 Static 關鍵詞很類似,但用於不同的效果。 如果您使用 Static 關鍵詞來宣告程式, (如同在 Static Sub CountSales ()
) 中一樣,則程式內所有局部變數的儲存空間會配置一次,而且會在程式執行的整個時間保留變數的值。 對於非靜態程式,每次呼叫程式時都會配置變數的儲存空間,並在程序結束時釋放。 Static 語句 可用來宣告非靜態程式內的特定變數,以保留其值,只要程式正在執行即可。
當變數初始化時,數值變數會初始化為0、變數長度字串會初始化為零長度字串 (“”) ,而固定長度字元串則會填入零。 Variant 變數會初始化為 空白。 用戶定義型別變數的每個項目都會初始化,就像是個別的變數一樣。
注意事項
當您在程式內使用 Static 語句時,請將這些語句放在程式的開頭,以及其他宣告語句,例如 Dim。
範例
這個範例會使用 Static 語句來保留變數的值,前提是模組程式代碼正在執行。
' Function definition.
Function KeepTotal(Number)
' Only the variable Accumulate preserves its value between calls.
Static Accumulate
Accumulate = Accumulate + Number
KeepTotal = Accumulate
End Function
' Static function definition.
Static Function MyFunction(Arg1, Arg2, Arg3)
' All local variables preserve value between function calls.
Accumulate = Arg1 + Arg2 + Arg3
Half = Accumulate / 2
MyFunction = Half
End Function
另請參閱
支援和意見反應
有關於 Office VBA 或這份文件的問題或意見反應嗎? 如需取得支援服務並提供意見反應的相關指導,請參閱 Office VBA 支援與意見反應。