共用方式為


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 選用。 變數的數據類型;可能是目前不支援的 ByteBooleanIntegerLongCurrencySingleDoubleDecimal () 、 DateString (,適用於可變長度字符串) 、 固定長度 字元串 () 、 ObjectVariant使用者定義型別對象類型。 針對所定義的每個變數使用個別的 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 支援與意見反應