VBA靜態變數與常量(轉)
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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 靜態變數與靜態方法變數
- 靜態變數和非靜態變數變數
- 常量與變數變數
- 六、常量與變數變數
- PHP 常量與變數PHP變數
- 靜態變數變數
- Java 反射修改類的常量值、靜態變數值、屬性值Java反射變數
- 【C++】靜態持續變數?如何建立靜態持續變數?C++變數
- destoon 系統常量與變數變數
- PHP變數與常量學習PHP變數
- 靜態持續變數變數
- 靜態變數和Session變數Session
- 避免因在類中使用靜態函式而大量使用靜態變數 (轉)函式變數
- 獨一無二----靜態成員變數 (轉)變數
- C語言區域性變數、全域性變數、靜態區域性變數、靜態全域性變數C語言變數
- 區域性變數和全域性變數(靜態和非靜態)區別變數
- JAVA基礎04——變數與常量Java變數
- static靜態變數的理解變數
- js中的靜態變數JS變數
- 靜態全域性變數和全域性變數變數
- 靜態變數和例項變數區別?變數
- Java靜態變數在靜態方法內部無法改變值Java變數
- PHP類的靜態(static)方法和靜態(static)變數PHP變數
- 全域性變數和靜態變數的區別變數
- 變數與常量 - Go 學習記錄變數Go
- Java培訓教程分享:變數與常量Java變數
- 重溫手冊(二):變數與常量變數
- 二,Java中常量與變數的理解Java變數
- 函式的靜態變數 static函式變數
- Java靜態變數塊使用案例Java變數
- C/C++ 靜態變數解析C++變數
- PHP的靜態變數介紹PHP變數
- Dll堆疊問題(Dll的靜態變數與全域性變數、vs的MT與MD)變數
- 2、全域性變數和列舉常量 (轉)變數
- java變數及常量Java變數
- java常量和變數Java變數
- C#靜態建構函式及靜態變數學習C#函式變數
- swift基礎語法(一)——常量與變數Swift變數