Excel VBA入門(一)數據類型
定義數據類型的優點有2個:
- 便於內存管理
- 便於程序進行計算(數值型)和其它使用(非數值型)
VBA中的基本數據類型有多種,但常用到的只有其中一半左右。
0. 變數的定義
VBA中用
Dim 變數名 As 數據類型n
的格式來定義基本變數。變數名可以是英文字母、數字、下劃線的組合,但必須以字母開頭。
變數的賦值則直接使用一個等號進行:
Dim i as Integerni = 3n
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 變數名n 成員1 [= 常數表達式1]n 成員2 [= 常數表達式2]n ……nEnd Enumn
開頭的「Public | Private」表示兩者取其一的意思,Public和Private用於定義變數的作用域(即變數的有效範圍,具體後面再講)。用中括弧[]括起來的部分是可以省略的,如果省略的話,則默認以0表示第一個成員,1表示第2個成員,以此類推。
最典型的就是用一個枚舉型變數來表示星期:
Public Enum WorkDaysn 星期日n 星期一n 星期二n 星期三n 星期四n 星期五n 星期六nEnd Enumn
它的使用如下:
推薦閱讀:
※如何用VBA語言同一EXCEL中不同sheet中的列數據按列順序導入到一個sheet中去?
※【VBA初學者教程】- 第一章 VBA入門知識:使用Excel對象的事件
※用excel VBA 可以做哪些簡單的小遊戲?
※Excel VBA 基礎(02.1)
※VBA逐句注釋:文本透視
TAG:VBA | MicrosoftOffice | MicrosoftExcel |