11/08/2018, 19:25

Collection trong VBA

Học java core Nội dung bài học : Add reference “Microsoft Scripting Runtime” (* bắt buộc). Hướng dẫn nhanh về việc sử dụng Collection trong VBA. Ví dụ về Collection trong VBA. Phương thức Add trong Collection. Ưu/Nhược điểm của Collection trong ...

Học java core

Nội dung bài học:

  • Add reference “Microsoft Scripting Runtime” (* bắt buộc).
  • Hướng dẫn nhanh về việc sử dụng Collection trong VBA.
  • Ví dụ về Collection trong VBA.
  • Phương thức Add trong Collection.
  • Ưu/Nhược điểm của Collection trong VBA.

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.

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”.

    Collection trong VBA
  • 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áoDim coll As Collection
Khởi tạo lúc run timeSet coll = New Collection
Khai báo và khởi tạoDim coll As New Collection
Add phần tử vào Collectioncoll.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ùngcoll(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”
Note: phần tử đầu tiên của mảng trong VBA có chỉ số là 0. Nhưng phần tử đầu tiên của collection trong VBA có chỉ số là 1.

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
Note: Key trong collection không phân biệt hoa thường.

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.

Học java core
0