與其它的編程語言一樣,VBA也有它自己的數據類型。講到數據類型,就離不開“變量”與“常量”這兩個概念,變量與常量,都是用於保存數據的。顧名思義,“變量”是會變的,即它的值是可以改變的;而常量,則它的值通常是固定不變的。
定義數據類型的優點有2個:
- 便於內存管理
- 便於程序進行計算(數值型)和其它使用(非數值型)
VBA中的基本數據類型有多種,但常用到的只有其中一半左右。
0. 變量與常量的定義
VBA中用
Dim 變量名 As 數據類型
的格式來定義基本變量。變量名可以是英文字母、數字、下划線的組合,但必須以字母開頭。
變量的賦值則直接使用一個等號進行:
Dim i as Integer
i = 3
定義常量
格式如下:
Const 常量名 As 數據類型 = 常量值
如下定義一個整型常量:
Const h As Integer = 18
1. 字符串 String
字符串是用於保存文本數據的,字符串內容應放置於雙引號內。
2. 數字類型
VBA中用於表示數字的數據類型有4種:整型 Integer、長整型 Long、單精度浮點型 Single、雙精度浮點型 Double。整型及長整型用於表示整數,單精度與雙精度浮點型都用於表示小數。
整型與長整型的區別在於兩者所能表示的數值范圍不同:
- 整型數據能表示的數據范圍:-32768 ~ 32767
- 長整型數據能表示的數據范圍:-2147483648 ~ 2147483647
而單精度浮點數與雙精度浮點數除了在數值范圍不同之外,兩者所能表示的數據精度(即小數點后多少位)也是不同的
- 單精度浮點型能表示的數據范圍
在表示負數時: -3.402823E38 ~ -1.401298E-45
在表示正數時: 1.401298E-45 ~ 3.402823E38
- 雙精度浮點型能表示的數據范圍
在表示負數時: -1.79769313486231E308 ~ -4.94065645841247E-324
在表示正數時: 4.94065645841247E-324 ~ 1.79769313486231E308
反正一句話,它們可以表示非常大的數據,但要注意的時,單精度浮點型其精度是6,即只能保存小數點后最多6位的數據;雙精度浮點型其精度是14,即只能保存小數點后最多14位的數據。如果超出以上長度,則超出部分會被去掉,並且會自動四舍五入。
如上圖,可以看到,作為單精度浮點數的i1在輸出時變成了5.123457。
其實如果試圖在給變量賦值時直接寫到小數點后15位,VBE是會自動檢測到並且直接進行四舍五入只保留14位的。上圖i2我本想賦值為5.123456789123456,但寫完最后的6之后,它自動消失了並且前面的5變成了6。
因為在數字的表示范圍上長整型大於整型,而雙精度浮點型大於單精度浮點型,理論上來說,如果把變量定義為表示范圍更大的數據類型可以更好地避免掉數據溢出的問題。但在定義變量時,應當遵守的一個原則就是:夠用就好。而不是越大越好。所以通常如果整型和單精度浮點型就足以表示數據的話,應當使用它們而不是長整型和雙精度浮點型。
3. 日期型 Date
日期型數據不僅可以表示日期,還可以表示時間。可以表示的日期范圍是:100年1月1日 ~ 9999年12月31日;可以表示的時間范圍是:0:00:00 ~ 23.59.59。
能被Excel識別到的日期,都可以賦值給日期型變量。因為Excel中有很多很多種日期格式,因此在這里無法一一舉例。需要用到的時候,可以多嘗試。
4. 布爾型 Boolean
布爾型數據用於表示邏輯值:真、假 。其中“真”為True,“假”為False。布爾值數據常用於條件判斷語句。
應當注意的是,當其它數據類型轉換為布爾值時,0會轉成False,其它值則變成True。當把布爾值轉換成其他數據類型時,False會轉換為0,True則是-1。
5. 變體型 Variant
變體型數據是一種特殊的數據類型,幾乎可以用於保存所有其它數據類型的數據。可以簡單地理解為:當不知道變量所要表示的數據是什么類型時,就把它定義為Variant(但這種操作應當盡量避免)。
6. 對象型 Object
對象型是VBA中另一種特殊的數據類型。有點類似於其它高級編程語言中的“對象”,因為它們都有自己的屬性與方法,但也僅限於在這兩個方面上類似。
對象型數據會在下一章單獨講解
7. 枚舉型
枚舉型數據就我目前而言使用得並不多,幾乎沒有使用過。但它可以在某些特定場合下比較有用,因此在這里也提一下。
當一個變量只有幾種可能的值時,可以定義為枚舉類型。枚舉就是將變量的值逐一列出,屬於該枚舉型的變量只能取列舉的某一個值。
枚舉型數據定義格式如下:
Public | Private Enum 變量名
成員1 [= 常數表達式1]
成員2 [= 常數表達式2]
……
End Enum
開頭的“Public | Private”表示兩者取其一的意思,Public和Private用於定義變量的作用域(即變量的有效范圍,具體后面再講)。用中括號[]括起來的部分是可以省略的,如果省略的話,則默認以0表示第一個成員,1表示第2個成員,以此類推。
最典型的就是用一個枚舉型變量來表示星期:
Public Enum WorkDays
星期日
星期一
星期二
星期三
星期四
星期五
星期六
End Enum
它的使用如下:
本系列教程其它文章
Excel VBA 入門(零)
Excel VBA 入門(一)數據類型
Excel VBA 入門(二)數組和字典
Excel VBA 入門(三) 流程控制1-條件選擇
Excel VBA 入門(四)流程控制2-循環控制
Excel VBA 入門(五)Excel對象操作
Excel VBA 入門(六)過程和函數
Excel VBA 入門(七)注釋、宏按鈕及錯誤處理
Excel VBA 入門(八)單元格邊框
Excel VBA 入門(九)操作工作薄
Excel VBA 入門(十)用戶窗體開發