Static 陳述式

用於 程序層級 宣告 變數 及分配儲存空間。 使用 Static 陳述式宣告的變數只要程式碼執行時會保留其值。

語法

靜態變體名稱 [ ( [ 下標 ] ) ] [ 作為 [ 新 ] 類型 ], [ 變體名 [ ( [ 下標 ] ) ] [ 作為 [ 新 ] 類型 ] ] ......

靜態語句語法包含以下部分:

部分 描述
varname 此為必要動作。 變數名稱;遵循標準變數命名規則。
下標 選用。 陣列變數的維度;最多可宣告 60 個多維度。 下標參數使用以下語法:

[ 降低到 ]上[, [下至] 上層......。

當 lower 未明確說明時,陣列的下界由 Option Base 陳述式控制。 若不存在 選項基礎 陳述,下界為零。
新增 選用。 關鍵字是能隱含建立物件的。 如果你在宣告物件變數時使用 New,物件的第一個參考就會建立一個新的實例,所以你不必使用 Set 陳述來指派物件參考。 新關鍵字無法用來宣告任何內在資料型態的變數,也無法用來宣告相依物件的實例。
type 選用。 變數的資料型態;可為位元組、布林、整數、長、貨幣、單、雙、十進 (位(目前不支援) )、日期、字串 ((可變長度字串) )、字串長度 ((固定長度字串) )、物件、變體、使用者定義型別或物件型別。 每個定義的變數都用獨立 的 As類型 子句。

註解

模組程式碼執行後,使用 Static 陳述式宣告的變數會保留其值,直到模組被重置或重新啟動。 在 類別模組中,使用 Static 陳述式宣告的變數會在每個類別實例中保留其值,直到該實例被銷毀為止。 在 形式模組中,靜態變數的值會保留直到表單封閉。

在非靜態程序中使用 靜態 陳述,明確宣告只在程序內可見,但其壽命與定義該程序所屬模組相同的變數。

在程序中使用 Static 陳述句來宣告變數的資料型別,該變數在程序呼叫間保持其值。 例如,以下陳述宣告一個固定大小的整數陣列:

Static EmployeeNumber(200) As Integer 

以下陳述為新工作表實例宣告變數:

Static X As New Worksheet 

如果宣告物件變數時未使用 新 關鍵字,則必須先透過 Set 陳述式指派該物件的現有物件,才能使用。 在被指派物件之前,宣告的物件變數具有特殊值 Nothing,表示它不指向任何特定的物件實例。 當你在宣告中使用 New 關鍵字時,物件的實例會在第一次引用物件時建立。

如果你沒有指定資料型別或物件型別,且模組中沒有 Def類型 語句,變數預設為 Variant 。

注意事項

靜態語句與靜態關鍵字相似,但用於不同的效果。 如果你像) 一樣Static Sub CountSales ()使用 Static 關鍵字 (宣告一個程序,程序中所有本地變數的儲存空間會被分配一次,變數的值會保留到整個程式執行期間。 對於非靜態程序,每次呼叫時會分配變數的儲存空間,退出程序時釋放。 Static 陳述式用於宣告非靜態程序中的特定變數,以保持其值直到程式執行期間。

當變數初始化時,數值變數會被初始化為 0,可變長度的字串會初始化為零長度的字串 (“”) ,而固定長度的字串則被填入零。 變體 變數會初始化為 Empty。 使用者定義型態變數的每個元素都被初始化為獨立變數。

注意事項

當你在程序中使用 靜態 語句時,請將它們與其他宣告式語句(如 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 支援與意見反應。