天天看點

資料類型 - EXCEL VBA(7)

作者:銀河統計工作室

在軟體開發中,資料類型是指變量或對象可以存儲的資料的特定類型。不同的程式設計語言和軟體平台可能具有不同的資料類型。使用 Excel VBA 進行程式設計時,正确選擇适當的資料類型對于程式的性能和正确性非常重要。下面用具體代碼介紹EXCEL VBA各種資料類型。

1、整型(Integer)

整型資料存儲為16位(2個位元組)的數字形式,其範圍為[−32768, 32767] 。整型資料運作較快,而且占用記憶體較少。整型資料變量聲明如下:

Dim x as Integer
Dim x%            

以上兩條語句都聲明了一個整數變量。注意,整型的類型聲明字元是百分号(%)。

2、長整型(Long)

長整型資料存儲為32位(4個位元組)有符号的數字形式,其範圍為[−2147483648, 2147483647]。長整型資料變量聲明如下:

Dim x As Long
Dim x&            

如果要在VBA程式中儲存較大數值,可采用長整型變量來儲存。長整型的類型聲明字元是和号(&)。

3、單精度浮點型(Single)

整型和長整型都用來表示整數,很多場合需要處理小數,這是就需要使用實數型資料。

實數型分為單精度浮點型和雙精度浮點型。單精度浮點型資料存儲為32位(4個位元組)浮點數值的形式。通常以指數形式(科學計數法)來表示,以“E”或“e”表示指數部分。

其範圍在負數的時候為[−3.402823E38, −1.401298E−45]、正數時為[1.401298E−45, 3.402823E38]。單精度浮點型的類型聲明字元是感歎号(!),變量聲明如下:

Dim x As Single
Dim x!            

4、雙精度浮點型(Double)

雙精度浮點型可以表示精度更高和更大的數值。雙精度浮點型資料存儲為64位(8個位元組)浮點數值的形式。

其範圍在負數的時候為[−1.79769313486231E308, −4.94065645841247E−324],

正數時為[4.94065645841247E−324, 1.79769313486231E308]。

雙精度浮點型的類型聲明字元是數字元号(#),變量聲明如下:

Dim x As Double
Dim x#            

若VBA程式中處理的資料範圍很大,或小數位很多,可采用雙精度浮點型。

5、貨币型(Currency)

該種資料類型主要用來表示貨币值。貨币類型資料存儲為64位(8個位元組)整型的數值形式。其小數點左邊有15位數字,右邊有4為數字。

這種表示法其範圍在負數的時候為[−922337203685477.5808, 922337203685477.5807]。

貨币型的類型聲明字元是at符号(@),變量聲明如下:

Dim x As Currency
Dim x@            

貨币型資料類型在貨币計算中很有用,在這種場合精度特别重要。浮點型資料比貨币型資料範圍大得多,但有可能産生小的進位誤差,而貨币型采用更多的位元組儲存資料,能減少計算誤差。

6、位元組型(Byte)

位元組型資料類型為數值型,用來儲存[0, 255]之間的整數,占用8位(1個位元組)存儲空間。常用位元組型資料類型存儲二進制資料,變量聲明如下:

Dim x As Byte           

位元組型表示的資料範圍有限,一般情況下不用來儲存資料。

7、字元型(String)

字元型資料類型表示為字元串,VBA中字元串包括在英文半角狀态的雙引号中,VBA的字元串分為變長與定長兩種類型。變長字元串的長度是不确定的,最多可包含大約20億(2^31)個字元;定長字元串的長度是确定的,可包含1到大約64K(2^16)個字元。變量聲明如下:

Dim str1 As String      '變長字元串
Dim str2 As String * 10 '定長字元串
Dim str3 As String
x = "EXCEL VBA"
y = "12345"
z = "" '空字元串            

注:VBA代碼中,符号“ ' ”為解釋标記符号,“ ' ”後面一般是對該行代碼做解釋

代碼中變量str1為變長字元串,可儲存多個字元。變量str2為定長字元串,該變量定義後将一直占用10個字元。

8、布爾型(Boolean)

布爾型資料隻有兩個值(True或False),該類型适合存儲簡單的二進制資訊,可儲存為16位2個字元的數值形式。變量聲明如下:

Dim x As Boolean           

當轉換其它類型資料為Boolean值時,0會轉換為False,而其它的值則變成True。當轉換Boolean值為其它資料類型時,False成為0,而True成為-1。

9、日期型(Date)

VBA支援複雜的日期操作和運算。日期型資料存儲為64位(8個位元組)浮點數值形式,可表達的日期範圍從1000年1月1日到9999年12月31日,而時間可以從0:00:00到23:59:59。

任何可辨認的文本日期都可以指派給Date變量。日期文字需要用數字元号(#)括起來,例如,#January 11,1998#。變量聲明如下:

Dim x As Date
x = #5/1/2019#
Sheet1.Cells(1, 1) = x
Sheet1.Cells(2, 1).NumberFormatLocal = "m-d-yyyy"
Sheet1.Cells(2, 1) = x            

日期型變量會根據計算機中的短日期格式來顯示。時間則根據計算機的時間格式(12小時或24小時時制)來顯示。當其它數值類型要轉換為日期型時,小數點左邊的值表示日期資訊,而小數點右邊的則表示時間。負數表示1899年12月30日之前的日期。

10、對象型(Object)

VBA是面向對象的程式設計語言,使用者可在程式中通路各種對象,如EXCEL的工作表、單元格等。對象型資料存儲為32位(4個位元組)的位址形式,引用對象時必須使用Set語句給對象變量指派。對象變量使用結束後,應為其指派為Nothing。變量聲明如下:

Dim myObj As Object
Set myObj = Worksheets("sheet1")
myObj.Cells(1, 1) = "object"
Set myObj = Nothing            

11、變體型(Variant)

變體型是一種特殊資料類型,VBA代碼中所有沒有被聲明的資料類型的變量都預設為變體型。除了定長String資料及使用者定義類型外,可以包含任何種類的資料。Variant也可以包含Empty、Error、Nothing及Null等特殊值。可以用VarType函數或TypeName函數來決定如何處理變體型中的資料。樣例代碼如下:

Dim myObj As Object
Set myObj = Worksheets("sheet1")
y = 100
MsgBox VarType(y)
MsgBox VarType(myObj)
MsgBox VarType(z)            

12、自定義資料類型(Type)

可以使用Type語句定義自己的資料類型。使用者自定義類型經常用來表示資料記錄,記錄一般由多個不同類型的資料元素組成。自定義資料類型定義如下:

Type Product
oName As String          '産品名稱
oQuantity As Integer     '庫存數量
oPrice As Currency       '單價
oOrder As Integer        '訂購量
End Type            

自定義資料類型的定義必須放在子產品(子產品和類子產品)的聲明部分。在VBE開發環境中 -> 【插入】 -> 【子產品】,系統在資料總管中加入節點“子產品1”。滑鼠輕按兩下“子產品1”節點,在代碼視窗通用欄中鍵入上述代碼。如圖:

資料類型 - EXCEL VBA(7)

使用Type語句聲明了一個使用者自定義類型後,就可以在任何事件中聲明、使用該類型的變量。可以用Dim、Private、Public、ReDim或Static來聲明使用者自定義類型的變量。樣例代碼如下:

Dim myPro As Product
myPro.oName = "電視"
myPro.oQuantity = 10
myPro.oPrice = 2345.99
myPro.oOrder = 5
MsgBox myPro.oName            

13、枚舉類型(Enum)

枚舉就是将變量的值逐一列舉出來,屬于該枚舉的變量隻能取列舉的某一個值。當一個變量有幾種可能值時,可以定義為枚舉類型。枚舉類型資料定義如下:

Public Enum Grade
 星期一 = 1
 星期二
 星期三
 星期四
 星期五
 星期六
 星期日
End Enum            

在預設情況下,枚舉類型第一項的值是0,而上述枚舉類型定義代碼自定義設定枚舉類型第一項的值為1。

枚舉類型定義代碼通常也放在子產品(子產品和類子產品)的聲明部分。使用Enum語句聲明了一個枚舉類型後,就可以在任何事件中聲明、使用該類型的變量。可以用Dim、Private、Public、ReDim或Static來聲明枚舉類型的變量。樣例代碼如下:

Dim myGrade As Grade  '聲明自定義枚舉變量
myGrade = 星期五      '為變量指派(鍵入等号後在下拉清單中選擇)
MsgBox myGrade        '顯示變量值為5            

鍵入第二行代碼的“=”時,系統自動出現下拉清單(星期一~星期日),用滑鼠之間選擇某個下拉選項即可。如圖:

資料類型 - EXCEL VBA(7)

每一段VBA代碼、每一個VBA函數都是從定義資料類型開始的。正确使用資料類型是編寫高效、可靠和安全程式的關鍵。選擇正确的資料類型可以提高程式的性能、減少記憶體使用和防止資料類型轉換錯誤。

繼續閱讀