Collection trong VBA được sử dụng để lưu trữ một nhóm các giá trị. Collection có thể lưu trữ một tập các hạng mục tương tự, ví dụ như một danh sách tên của các sinh viên hoặc tên quốc gia. Sử dụng một collection hoặc array cho phép bạn nhanh chóng và dễ dàng thao tác một số lượng lớn các hạng mục.
Nội dung chính
1. Add reference "Microsoft Scripting Runtime"
Trước tiên, để sử dụng Collection trong VBA, bạn cần phải add reference "Microsoft Scripting Runtime", các bước thực hiện như sau:
- 1. Mở VB Editor(Alt + F11).
- 2. Tools –> References…
-
3. Chọn “Microsoft Scripting Runtime”.
- 4. Click OK.
2. Hướng dẫn nhanh về việc sử dụng Collection
Dưới đây là bảng hướng dẫn sử dụng nhanh collection trong VBA.
Task | Examples |
---|---|
Khai báo | Dim coll As Collection |
Khởi tạo lúc run time | Set coll = New Collection |
Khai báo và khởi tạo | Dim coll As New Collection |
Add phần tử vào Collection | coll.Add "Apple" |
Truy cập phần tử | coll(1) hoặc coll(2) |
Truy cập phần tử đầu tiên | coll(1) |
Truy cập phần tử cuối cùng | coll(coll.Count) |
Get số lượng phần tử | coll.Count |
Truy cập tất cả các phần tử (For) | Dim i As Long For i = 1 To coll.Count Debug.Print coll(i) Next i |
Truy cập tất cả các phần tử (For Each) | Dim fruit As Variant For Each fruit In coll Debug.Print fruit Next fruit |
Remove phần tử | coll.Remove(1) |
Remove tất cả các phần tử (Dim coll As New Collection) | Set coll = Nothing coll.Add "Apple" |
Remove tất cả các phần tử (Dim coll As Collection Set coll = New Collection) | Set coll = Nothing Set coll = New Collection coll.Add "Apple" |
3. Ví dụ về Collection trong VBA
Ví dụ 1:
Sub collectionExample1() Dim i As Integer ' khai bao collection fruitColl Dim fruitColl As Collection ' khoi tao coll Set fruitColl = New Collection ' Add cac phan tu vao coll fruitColl.Add "Apple" fruitColl.Add "Mango" fruitColl.Add "Lemon" fruitColl.Add "Coconut" ' phan tu dau tien MsgBox "Phan tu dau tien: " & fruitColl(1) ' phan tu cuoi cung MsgBox "Phan tu cuoi cung: " & fruitColl(fruitColl.Count) ' truy cap cac phan tu (For) For i = 1 To fruitColl.Count MsgBox "Phan tu " & i & ": " & fruitColl(i) Next i ' xoa phan tu dau tien fruitColl.Remove (1) MsgBox "So phan tu con lai: " & fruitColl.Count ' xoa tat ca phan tu Set fruitColl = Nothing ' fruitColl.Add "Apple" ' error vi fruitColl da bi xoa End Sub
Kết quả:
Phan tu dau tien: Apple Phan tu cuoi cung: Coconut Phan tu 1: Apple Phan tu 2: Mango Phan tu 3: Lemon Phan tu 4: Coconut So phan tu con lai: 3
4. Phương thức Add trong Collection
Phương thức Add được sử dụng để thêm mới phần tử vào collection.
Cú pháp:
Add (Item, [Key], [Before], [After])
Trong đó:
- Item: Một tham số bắt buộc, là giá trị của hạng mục.
- Key: Một tham số tùy chọn, là key của hạng mục.
- Before: Một tham số tùy chọn, lưu hạng mục tại vị trí trước vị trí chỉ định.
- After: Một tham số tùy chọn, lưu hạng mục tại vị trí sau vị trí chỉ định.
Ngoài việc lưu trữ bằng việc đánh chỉ số tự động, VBA cho phép bạn lưu trữ phần tử của collection với một Key. Hãy xem ví dụ dưới đây để hiểu về vấn đề này:
Sub collectionExample2() Dim i As Integer Dim fruitColl As New Collection ' add phan tu vao fruitColl fruitColl.Add Item:="Apple", Key:="A" fruitColl.Add Item:="Coconut", Key:="C", Before:=1 fruitColl.Add Item:="Orange", Key:="O", After:="C" ' hien thi cac phan tu theo index MsgBox "phan tu so 1: " & fruitColl(1) MsgBox "phan tu so 2: " & fruitColl(2) MsgBox "phan tu so 3: " & fruitColl(3) ' hien thi cac phan tu theo key MsgBox "phan tu ""a"": " & fruitColl("a") MsgBox "phan tu ""C"": " & fruitColl("C") MsgBox "phan tu ""O"": " & fruitColl("O") ' hien thi cac phan tu bang phuong thuc Item() theo index MsgBox "phan tu Item(1): " & fruitColl.Item(1) MsgBox "phan tu Item(2): " & fruitColl.Item(2) MsgBox "phan tu Item(3): " & fruitColl.Item(3) ' xoa collection Set fruitColl = Nothing End Sub
Kết quả:
phan tu so 1: Coconut phan tu so 2: Orange phan tu so 3: Apple phan tu "a": Apple phan tu "C": Coconut phan tu "O": Orange phan tu Item(1): Coconut phan tu Item(2): Orange phan tu Item(3): Apple
5. Ưu/Nhược điểm của Collection trong VBA
Ưu điểm
Dễ sử dụng, không cần phải khai báo kích thước trước khi sử dụng.
Nhược điểm
Collection chỉ đọc. Có nghĩa là bạn có thể thêm hoặc xóa một phần tử nhưng bạn không thể thay đổi giá trị của phần tử đó. Nếu bạn muốn thay đổi các giá trị trong một nhóm các giá trị thì bạn cần phải sử dụng một mảng.