VBA靜態變數與常量(轉)

amyz發表於2007-08-13
VBA靜態變數與常量(轉)[@more@]

  VBA程式碼中包含變數、運算子和語句。變數在程式碼中起到互交與連線的作用。變數從建立為合適的物件與資料型別,到初始化,再透過運算子計算或執行語句修改,來完成整個互交的過程。

  宣告變數的關鍵詞是Dim,其語法是

  Dim [WithEvents] varname[([subscripts])] [As [New] type] [, [WithEvents] varname[([subscripts])] [As [New] type]] . . .

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

  部分 描述

  WithEvents 可選的。關鍵字,說明 varname 是一個用來響應由 ActiveX 物件觸發的事件的物件變數。只有在類模組中才是合法的。使用 WithEvents,可以宣告任意個所需的單變數,但不能使用 WithEvents 建立陣列。New 和 WithEvents 不能一起使用。

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

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

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

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

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

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

  而在宣告變數或建立變數的同時,最好先考慮好變數用什麼資料型別,下面 表格顯示所支援的資料型別,以及儲存空間大小與範圍。

  資料型別 儲存空間大小 範圍

  Byte 1 個位元組 0 到 255

  Boolean 2 個位元組 True 或 False

  Integer 2 個位元組 -32,768 到 32,767

  Long

  (長整型) 4 個位元組 -2,147,483,648 到 2,147,483,647

  Single

  (單精度浮點型) 4 個位元組 負數時從 -3.402823E38 到 -1.401298E-45;正數時從 1.401298E-45 到 3.402823E38

  Double

  (雙精度浮點型) 8 個位元組 負數時從 -1.79769313486231E308 到

  -4.94065645841247E-324;正數時從4.94065645841247E-324 到 1.79769313486232E308

  Currency

  (變比整型) 8 個位元組 從 -922,337,203,685,477.5808 到 922,337,203,685,477.5807

  Decimal 14 個位元組 沒有小數點時為 +/-79,228,162,514,264,337,593,543,950,335,而小數點右邊有 28 位數時為 +/-7.9228162514264337593543950335;最小的非零值為 +/-0.0000000000000000000000000001

  Date 8 個位元組 100 年 1 月 1 日 到 9999 年 12 月 31 日

  Object 4 個位元組 任何 Object 引用

  String

  (變長) 10 位元組加字串長度 0 到大約 20 億

  String

  (定長) 字串長度 1 到大約 65,400

  Variant

  (數字) 16 個位元組 任何數字值,最大可達 Double 的範圍

  Variant

  (字元) 22 個位元組加字串長度 與變長 String 有相同的範圍

  使用者自定義

  (利用 Type) 所有元素所需數目 每個元素的範圍與它本身的資料型別的範圍相同。

  其中的Variant是個很特殊的資料型別,它能表示除固定長度之外的所有值,並可以透過VarType來返回其資料子型別。其語法如下:

  VarType(varname)

  必要的 varname 引數是一個 Variant,包含使用者定義型別變數之外的任何變數。

  下面這個表表示VarType返回的值的意義:

  常數 值 描述

  vbEmpty 0 Empty(未初始化)

  vbNull 1 Null(無有效資料)

  vbInteger 2 整數

  vbLong 3 長整數

  vbSingle 4 單精度浮點數

  vbDouble 5 雙精度浮點數

  vbCurrency 6 貨幣值

  vbDate 7 日期

  vbString 8 字串

  vbObject 9 物件

  vbError 10 錯誤值

  vbBoolean 11 Boolean 值

  vbVariant 12 Variant(只與變體中的陣列一起使用)

  vbDataObject 13 資料訪問物件

  vbDecimal 14 十進位制值

  vbByte 17 位值

  vbUserDefinedType 36 包含使用者定義型別的變數

  vbArray 8192 陣列

  變數因宣告的位置與使用Public或Private關鍵字,其有效範圍可能為3種:過程範圍、模組範圍與全域性範圍。當變數放在模組頭部,並使用Public代替Dim時,這個變數就是全域性變數;而如果是用Dim或者用Private代替Dim時,這個變數是模組級變數;而當變數在過程中宣告就是過程變數了。

  通常的過程變數在過程結束後值是不儲存,但如果子程式使用Static語句,或者用Static宣告的過程變數是例外的,下面用兩個例項說明一下。

  Static Sub ExcelbaSub2()

  Dim X As Integer

  MsgBox "X = " & X

  X = X + 1

  End Sub

  Sub ExcelbaSub3()

  Static Y As Integer

  MsgBox "Y = " & Y

  Y = Y + 1

  End Sub

  執行上面的過程,你就比較容易理解Static的用途了。

  除了變數,我們還經常用到一些常量,包含系統定義與自定義的常量。常量與變數有很多相似之處,但常量的值是保持不變的,如果程式碼中常常出現一個數值,最好的方法就是定義成常量,這樣既使程式碼易於編寫,也讓程式碼容易閱讀。定義常量的關鍵詞是Const,其語法是:

  語法

  [Public | Private] Const constname [As type] = expression

  其中的expression就是常量的值,其它與變數相同,就不重複了。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752019/viewspace-955123/,如需轉載,請註明出處,否則將追究法律責任。

相關文章