Static 陳述式
用於 程式層級 ,以宣告 變數 並配置儲存空間。 只要程式碼正在執行,以 Static 語句宣告的變數就會保留其值。
語法
Staticvarname [ ( [ subscripts ] ) ] [ As [ New ] type ], [ varname [ ( [ subscripts ] ) ] [ As [ New ] type ]] . . 。
Static語句語法具有下列部分:
部分 | 描述 |
---|---|
varname | 此為必要動作。 變數的名稱;遵循標準變數命名慣例。 |
下標 | 選用。 數 組變 量的維度;最多可以宣告 60 個多個維度。 下標自變量會使用下列語法: [ lowerTo ] upper [ , [ lowerTo ] upper ] . . . . 若未在 下方明確陳述,則陣列的下限是由 Option Base 語句所控制。 如果沒有 Option Base 語句,則下限為零。 |
新增 | 選用。 啟用物件隱含建立的關鍵字。 如果您在宣告物件變數時使用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 支援與意見反應。
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應