回覆列表
  • 1 # 天天吃泡麵膜紙

    Static 語句

    請參閱 示例 特性

    在過程級別中使用,用於宣告變數並分配儲存空間。在整個程式碼執行期間都能保留使用 Static 語句宣告的變數的值。

    語法

    Static varname[([subscripts])] [As [New] type] [, varname[([subscripts])] [As [New] type]] . . .

    Static 語句的語法包含下面部分:

    部分 描述

    varname 必需的。變數的名稱;遵循標準變數命名約定。

    subscripts 可選的。陣列變數的維數;最多可以定義 60 維的多維陣列。subscripts 引數使用下面的語法:

    [lower To] upper [,[lower To] upper] . . .

    如果不顯式指定 lower,則陣列的下界由 Option Base 語句控制。如果沒有 Option Base 語句則下界為 0。

    New 可選的。用它可以隱式地建立物件的關鍵字。如果使用 New 宣告物件變數,則在第一次引用該變數時將新建該物件的例項,因此不必使用 Set 語句來對該物件引用賦值。New 關鍵字不能用來宣告任何內部資料型別的變數,也不能用來宣告從屬物件的例項。

    type 可選的。變數的資料型別;可以是 Byte、Boolean、Integer、Long、Currency、Single、Double、Decimal(目前尚不支援)、Date、String(對變長的字串)、String * length(對定長的字串)、Object、Variant、使用者定義型別或物件型別。所宣告的每個變數都要有一個單獨的 As type 子句。

    說明

    模組的程式碼開始執行後,使用 Static 語句宣告的變數會一直保持其值,直至該模組復位或重新啟動。可以在非靜態的過程中使用 Static 語句顯式宣告只在該過程內可見,但具有與包含該過程定義的模組相同生命期的變數。

    可以在過程中使用 Static 語句來宣告在過程呼叫之間仍能保持其值的變數的資料型別。例如,下面的語句聲明瞭一個定長的整型陣列:

    Static EmployeeNumber(200) As Integer

    下面的語句為 worksheet 的新例項聲明瞭一個變數:

    Static X As New Worksheet

    如果在定義物件變數時沒有使用 New 關鍵字,則在使用該變數之前,必須使用 Set 語句將一個已有的物件賦給這個引用物件的變數。在被賦值之前,所宣告的這個物件變數有一個特定值 Nothing,這個值表示該變數沒有指向任何物件的例項。若在宣告中使用了 New 關鍵字,則在第一次引用物件時將新建一個該物件的例項。

    如果不指定資料型別或物件型別,且在模組中沒有使用 Deftype 語句,則按預設情況,定義該變數為 Variant 型別。

    注意 Static 語句與 Static 關鍵字很相似,但是針對不同的效果來使用的。如果使用 Static 關鍵字(如 Static Sub CountSales ())來宣告一個過程,則該過程中的所有區域性變數的儲存空間都只分配一次,且這些變數的值在整個程式執行期間都存在。對非靜態過程而言,該過程每次被呼叫時都要為其變數分配儲存空間,當該過程結束時都要釋放其變數的儲存空間。Static 語句則用來在非靜態的過程中宣告特定的變數,以使其在程式執行期間能保持其值。

    在初始化變數時,數值變數被初始化為 0,變長的字串被初始化為一個零長度的字串 (""),而定長的字串則用 0 填充。Variant 變數被初始化為 Empty。使用者自定義型別的變數的每個元素作為各自獨立的變數進行初始化。

    注意 如果在過程中使用 Static 語句,應和其它的宣告語句(如 Dim)一樣將其放在過程的開始。

    Static 語句示例

    該示例使用 Static 語句,可以在模組程式碼執行期間一直保持變數的值。

    "函式定義。

    Function KeepTotal(Number)

    "只有 Accumulate 變數能在呼叫過程之間保持其值。

    Static Accumulate

    Accumulate = Accumulate + Number

    KeepTotal = Accumulate

    End Function

    "Static 函式定義。

    Static Function MyFunction(Arg1, Arg2, Arg3)

    "所有區域性變數在函式呼叫之間都能保持其值。

    Accumulate = Arg1 + Arg2 + Arg3

    Half = Accumulate / 2

    MyFunction = Half

    End Function

  • 中秋節和大豐收的關聯?
  • 在一線城市兜售洗淨切好的生鮮菜有市場空間嗎?