Excel VBA入門(二)數組和字典


數組和字典也是VBA的常用到數據類型之一。但是我翻了有四五本VBA教程相關的書,里面都沒有介紹到字典,數組到是在介紹數據類型時有介紹,而並沒有提到字典。
事實上,字典不是VBA內置的類型,它是Windows腳本語言的。但其實字典在VBA中也是非常重要的,它非常適用於需要進行非重復性數據的操作。我多次需要使用到字典,但很少用到數組。

1. 數組

如果有學過其它編程語言,應該對數組不陌生。其實數組就是多個變量的集合,而且它是有順序的,通過索引來訪問一個數組中的各個值。
但應該記住的是:數組中的各個數據,它們的類型必須是相同的。

數組也應當要先聲明,后使用。VBA中的數組有動態數組和靜態數組之分。

1.1 靜態數組

所謂靜態數組,即它的長度是固定不可變的。
聲明語法如下:

Dim 數組名(a to b) As 數據類型

其中a和b均為數字,表示數據的索引起始值。也可以只寫一個數字,則此時數組使用默認索引,從1開始,數字表示它的長度。
例如:

Dim MyArray1(10) As String
Dim MyArray2(10 to 20) As String

1.2 動態數組

如果在定義時並不知道需要使用的數組的長度是多少,則可以定義它為動態數組:

Dim Myarr3() As String

可以看到,定義動態數組,只需要在括號里面留空就行了。
待確定了數組的長度之后,可以使用ReDim來重新定義數組

1.3 數組的賦值與取值

雖然都是通過索引來對數組進行賦值,但與其它主流的編程語言不同的是,VBA中不是使用中括號[]而是使用小括號()進行的。

Dim arr(5) As String

For i = 1 to 5
     '賦值
     arr(i) = i
Next

'取值
Debug.Print arr(1)

此外,也可以直接把Excel單元格中的數據賦值給數組。如上面定義的長度為5的一維數組,可以以以下方式把單元格中A1到A5的數據分別載入到數組arr中:

arr = Range("A1:A5")

1.4 多維數組

VBA中也支持多維數組。
如,定義一個四行五列的二維數組如下:

Dim Myarr(4, 5) as String

或者:

Dim Myarr(1 to 4, 5 to 8) As String

定義一個三維數組:

Dim Myarr(3, 4, 5) As String

或者:

Dim Myarr(1 to 3, 4 to 6, 7 to 9) As String

1.5 其它

網上有說到很多對數組的操作,例如求數組的上下界,對數組求和等,我覺得這些都不算是數組的特有操作,因為它對其它數據類型也是可以使用的,所以就不打算再介紹了。有需要用到的,可以再查詢

2 字典

字典其實就是一些“鍵-值”對。在很多場合,它都能起到很大的作用,使用起來非常方便,有類似於微型數據庫的作用,可用於臨時保存一些數據信息。

2.1 創建字典

VBA中創建字典有兩種方法

2.1.1. 引用聲明

在VBE菜單中,選擇“工具-引用”,在彈出的對話框中選擇中邊的“瀏覽”,此時會打開Windows系統的驅動目錄(C:\Windows\System32),然后找到scrrun.dll,確定確定返回就行了。
添加引用后,就可以像定義其它變量一樣聲明使用字典了。

Dim d As New Dictionary

2.1.2. 直接創建

我目前基本上都使用的這種方法。可如下定義:

Dim d As Object
Set d = CreateObject("Scripting.Dictionary")

2.2 字典的方法

字典有6個方法,分別是Add、Exists、Keys、Items、Remove、RemoveAll。使用方法如下:

2.2.1 Add

用於添加內容到字典中。

d.Add key, item

第一個參數為鍵,第二個參數為鍵對應的值

2.2.2 Exists

用於判斷指定的關鍵詞是否存在於字典(的鍵)中。

d.Exists(key)

如果存在,返回True,否則返回False。通常會在向字典中添加條目的時候使用,即先判斷字典中是否已存在這個記錄,如果不存在則新增,否則進行其它的操作。

2.2.3 Keys

獲取字典所有的鍵,返回類型是數組。

d.Keys()

2.2.4 Items

獲取字典所有的值,返回類型是數組。

d.Items()

2.2.5 Remove

從字典中移除一個條目,是通過鍵來指定的。

d.Remove(key)

如果指定的鍵不存在,會發生錯誤。

2.2.6 RemoveAll

清空字典。

2.3 字典的屬性

字典有4個屬性:Count、Key、Item、ConpareMode

2.3.1 Count

用於統計字典中鍵-值對的數量。也可以簡單理解為統計字典中鍵的個數。

d.Count

2.3.2 Key

用於更改字典中已有的鍵。如:

d.Key("apple") = "Orange" 

如果指定的鍵不存在,則會產生錯誤。

2.3.3 Item

用於寫入或讀取字典中指定鍵的值,如果指定的鍵不存在,則會新增。如:

'讀取
Debug.Print d.Item("apple")

'寫入
d.Item("apple") = 10

2.3.4 CompareMode

CompareMode用於設置或者讀取字典對象中比較字符串時的比較模式。
這個到目前為止我還沒有用過。所以不討論了。


本系列教程其它文章

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 入門(十)用戶窗體開發


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM