用於 程序層級 宣告 變數 及分配儲存空間。 使用 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 支援與意見反應。