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 選用。 變數的資料類型;可能是目前不支援的 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 支援與意見反應