11/08/2018, 19:24

Dictionary 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 Dictionary trong VBA. Ví dụ về Dictionary trong VBA. Trong VBA, chúng ta có thể sử dụng Array hoặc Collection để lưu trữ các ...

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 Dictionary trong VBA.
  • Ví dụ về Dictionary trong VBA.

Trong VBA, chúng ta có thể sử dụng Array hoặc Collection để lưu trữ các nhóm của các giá trị. Ví dụ, chúng ta có thể sử dụng chúng để lưu trữ danh sách tên khách hàng, điểm của sinh viên, hoặc danh sách giá trị từ các cell trong một cột.

Dictionary trong VBA lưu trữ dữ liệu dưới dạng cặp key và value, các key không được trùng nhau. Dictionary được sinh ra để lấp đầy 2 khuyết điểm chính của Collection, với Dictionary chúng ta có thể:

  1. Kiểm tra Key đã tồn tại chưa.
  2. Có thể thay đổi giá trị của phần tử.

1. Add reference “Microsoft Scripting Runtime” (* bắt buộc).

Trước tiên, để sử dụng Dictionary trong VBA, bạn cần phải add reference “Microsoft Scripting Runtime”, các bước thực hiện giống như trong bài Collection trong VBA.

2. Hướng dẫn nhanh về việc sử dụng Dictionary trong VBA.

Hàm VLookup trong Excel hoạt động tương tự như một Dictionary. Bạn có thể tra một giá trị dựa trên một key duy nhất.

Dưới đây là bảng hướng dẫn sử dụng nhanh collection trong VBA.

Task Example
Khai báo và khởi tạo (early binding)
Dim dict As Scripting.Dictionary
Set dict = New Scripting.Dictionary
Khai báo và khởi tạo (late binding) Dim dict As Object
Set dict = CreateObject(“Scripting.Dictionary”)
Add phần tử mới dict.Add Key, Value
e.g. dict.Add “Apples”, 50
Chay đổi giá trị của một key. Tự động thêm mới nếu key chưa tồn tại dict(Key) = Value
e.g. dict(“Oranges”) = 60
Lấy ra một giá trị từ dictionary bằng việc sử dụng key Value = dict(Key)
e.g. appleCount = dict(“Apples”)
Check key tồn tại dict.Exists(Key)
e.g. If dict.Exists(“Apples”) Then
Remove phần tử dict.Remove Key
e.g. dict.Remove “Apples”
Remove tất cả các phần tử dict.RemoveAll
Duyệt các phần tử (For Each) Dim key As Variant
For Each key In dict.Keys
    Debug.Print key, dict(key)
Next key
Duyệt các phần tử (for loop – chỉ TH early binding) Dim i As Long
For i = 0 To dict.Count – 1
   Debug.Print dict.Keys(i), dict.Items(i)
Next i
Lấy số phần tử của dict dict.Count
Thiết lập key phân biệt hoa thường (dictionary phải là empty). dict.CompareMode = vbBinaryCompare
Thiết lập key không phân biệt hoa thường (dictionary phải là empty). dict.CompareMode = vbTextCompare

3. Ví dụ về Dictionary trong VBA.

Dưới đây là ví dụ tra từ điển các loại quả trong tiếng anh bằng việc sử dụng đối tượng Dictionary.

Sub dictionaryExample1()
    ' khoi tao dictionary dict
    Dim dict As New Scripting.Dictionary
    
    ' thiet lap key khong phan biet hoa thuong
    dict.CompareMode = vbTextCompare
    
    ' add phan tu vao dict
    dict.Add Key:="Apple", Item:="Qua Tao"
    dict.Add Key:="Peach", Item:="Qua Dao"
    dict.Add Key:="Plum", Item:="Qua Man"
    dict.Add Key:="Orange", Item:="Qua Cam"
    dict.Add Key:="Lemon", Item:="Qua Chanh"
    dict.Add Key:="Cucumber", Item:="Qua Dua Chuot"

    Dim sFruit As String
    ' Ask user to enter fruit
    sFruit = InputBox("Enter fruit: ")

    ' check fruit ma nguoi dung nhap trong dict
    If dict.Exists(sFruit) Then
        MsgBox sFruit & " nghia la " & dict(sFruit)
    Else
        MsgBox sFruit & " khong ton tai."
    End If
    
    ' xoa dict de giai phong bo nho
    Set dict = Nothing
End Sub

Kết quả:

Ví dụ về Dictionary trong VBA

Nhập “lemon” -> click OK.

Ví dụ về Dictionary trong VBA
Học java core
0