Dictionary

Prasyarat:


Dictionary dalam VBA (Visual Basic for Applications) adalah objek yang digunakan untuk menyimpan dan mengelola data dalam bentuk pasangan kunci-nilai (key-value pairs).

Setiap elemen dalam Dictionary memiliki dua komponen utama:

  • Kunci (Key)
  • Nilai (Value)

Key adalah nilai yang digunakan sebagai identifikasi unik untuk setiap elemen dalam Dictionary. Kunci harus bersifat unik, artinya tidak bisa ada dua elemen dengan kunci yang sama.

Sedangkan Value adalah data atau informasi yang ingin kita simpan dalam Dictionary dan terkait dengan kunci tertentu.

Value bisa berupa tipe data apa pun, seperti angka, teks, tanggal, objek, atau bahkan tipe data lainnya seperti Array atau koleksi lainnya.

Dictionary sangat berguna ketika kamu ingin menyimpan data dalam cara yang terstruktur dan efisien. Dengan menggunakan kunci, kamu dapat dengan mudah mengakses dan mencari nilai yang sesuai dalam Dictionary, tanpa perlu melalui loop atau perulangan seperti saat menggunakan Array atau Data koleksi lainnya.

Seperti yang sudah dijelaskan pada meteri Object Binding, untuk mulai menggunakan Dictionary ada 2 cara yang bisa dilakukan. Yaitu dengan Early Binding atau Late Binding.

Early Binding

Dalam konteks “early binding” di VBA, kita menggunakan pendekatan untuk mengaitkan objek dengan kode secara eksplisit sebelum waktu kompilasi. Ini berarti kita harus menentukan jenis objek yang digunakan sebelum menggunakannya dalam kode.

Untuk menggunakan Dictionary dengan early binding dalam VBA, kita perlu mengambil referensi ke Library yang menyediakan objek Dictionary tersebut.

Dalam VBA, kita bisa menggunakan “Microsoft Scripting Runtime” untuk mengakses Dictionary.

Berikut adalah langkah-langkahnya:

  1. Buka VBA Editor (tekan ALT + F11 dalam Excel).
  2. Pilih menu “Tools” > “References…”
  3. Di dalam kotak dialog “References,” cari dan centang opsi “Microsoft Scripting Runtime.

Setelah langkah-langkah di atas, kita bisa menggunakan Dictionary dengan early binding. seperti dibawah ini.

Dim dataSiswa As Scripting.Dictionary
Set dataSiswa = New Scripting.Dictionary

Late Binding

Sedangkan untuk late binding, kita bisa langsung menggunakan dictionary tanpa perlu menambahkan References terlebih dahulu.

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

Panduan Cepat VBA Dictionary

Berikut ini panduan cepat untuk dictionary

FungsiContoh
Menambahkan item
(Tidak boleh ada Key yang sama)
dataSiswa.Add "Andi", 50
Mengubah Nilai item
(Otomatis Item ditambahkan jika tidak ada).
dataSiswa("Budi") = 60
Mengambil Nilai ItemNilaiAndi = dataSiswa("Andi")
Cek Jika Item sudah adaIf dataSiswa.Exists("Andi") Then
Menghapus ItemdataSiswa.Remove "Andi"
Menghapus semua ItemdataSiswa.RemoveAll
Menampilkan semua item
(for each loop)
Dim key As Variant
For Each key In dataSiswa.Keys
    Debug.Print key, dataSiswa(key)
Next key
Menampilkan semua item
(for loop – Early Binding)
Dim i As Long
For i = 0 To dataSiswa.Count - 1
   Debug.Print dataSiswa.Keys(i),      dataSiswa.Items(i)
Next i
Menampilkan semua item
(for loop)
Dim i As Long
For i = 0 To dataSiswa.Count - 1
Debug.Print dataSiswa.Keys()(i), dataSiswa.Items()(i)
Next i
Mengetahui Total ItemdataSiswa.Count
Case Sensitive DictionarydataSiswa.CompareMode = vbBinaryCompare
Non case sensitive dataSiswa.CompareMode = vbTextCompare

Berikut ini adalah contoh penggunaan Dictonary

Sub ContohDictionary()
    ' Deklarasi Dictionary
    Dim dataSiswa As Object
    Set dataSiswa = CreateObject("Scripting.Dictionary")
    
    ' Menambahkan data siswa ke dalam Dictionary
    dataSiswa.Add "Ani", 15
    dataSiswa.Add "Budi", 17
    dataSiswa.Add "Cindy", 16
    
    ' Mengakses dan menampilkan nilai berdasarkan kunci
    MsgBox "Umur Budi: " & dataSiswa("Budi")
    
    ' Mengubah nilai data siswa
    dataSiswa("Ani") = 16
    
    ' Menghapus data siswa berdasarkan kunci
    dataSiswa.Remove "Cindy"
End Sub

Contoh Kasus

  • Buat script untuk mengambil data unik dai kolom C2:C15
  • Tampilkan hasilnya ke Range E2

Jawaban :

Sub BuatUnik()
Dim Kamus As Object

Set Kamus = CreateObject("Scripting.Dictionary")

For Each sel In Range("C2:C15")
    Kamus.Item(sel.Value) = 0
Next

Range("E2").Resize(Kamus.Count) = Application.Transpose(Kamus.keys)

End Sub

Leave a Reply

Your email address will not be published. Required fields are marked *

Chat WhatsApp
WhatsApp