Prasyarat:
VBA ArrayList adalah alternatif untuk variable array yang jauh sedikit lebih baik daripada collection bawaan VBA.
Arratlist memiliki banyak sekali fungsi yang sangat berguna yang bisa digunakan untuk mengolah Array, misalnya seperti melakukan Sort, membalik array, menduplikat Array, dll.
Kamu bisa lihat panduan singkat tentang apa saja yang dilakukan ArrayList.
dibawah ini adalah contoh cara menggunakan ArrayList.
Deklarasi Late Binding | Dim obj As Object |
Deklarasi Early Binding | Dim obj As New |
Menambah Value | obj.Add "Apel" |
Menambah Value dengan Index | obj.Insert 0, "Apel" |
Membaca Item | Obj.Item(0) |
Menghapus Semua item | Obj.Clear |
Sort Ascending | Obj.Sort |
Sort Descending | Obj.Reverse |
Pada awal penggunaan sebuah typedata tentu diawali dengan deklarasi variable terlebih dahulu.
Seperti yang sudah saya jelaskan tentang deklarasi penggunaan object, dimana object bisa dideklarasikan dengan dua cara yaitu Late Binding atau Early Binding.
Baca juga : Object Binding
Berikut ini contoh penggunaan Arraylist dengan Late Binding.
Sub LateBindingArrayList() Dim objArrayList As Object ' Gunakan tipe objek untuk late binding Set objArrayList = CreateObject("System.Collections.ArrayList") End sub
Pada late binding ArrayList di deklarasikan sebagai Object, sebelum Objectnya dibuat dengan CreateObject dari “System.Collections.ArrayList”.
Jika ingin menggunakan object dengan Early binding, kamu harus menambahkan object melalui Reference, caranya :
Setelah Reference Arraylist diaktifkan, maka sekarang kamu bisa mendeklarasikan Arraylist secara langsung.
Sub EarlyBindingArrayList() Dim objArrayList As New ArrayList End sub
Untuk menambahkan nilai baru ke arraylist ada beberapa cara bisa secara langsung dengan menggunakan Add.
Contohnya seperti dibawah ini
Sub ContohArrayList() Dim Buah As Object Set Buah = CreateObject("System.Collections.ArrayList") ' Menambahkan Item Baru Buah.Add "Apel" Buah.Add "Jambu" Buah.Add "Semangka" Buah.Add "Jeruk" End Sub
Atau dengan menggunakan Insert tetapi dengan menyebutkan posisi atau Index nya, contohnya :
Sub ContohArrayList() Dim Buah As Object Set Buah = CreateObject("System.Collections.ArrayList") ' Menambahkan Item Baru Buah.Insert 0, "Apel" Buah.Insert 1, "Jambu" End Sub
Untuk membaca nilai yang ada pada ArrayList bisa langsung menggunakan Item berserta dengan index atau posisinya,
Misalnya jika ingin membaca isi dari ArrayList pertama adalah :
Sub ContohArrayList() Dim HargaApel as Variant HargaApel = Buah.Item(0) End Sub
Atau Jika ingin membaca semua Item yang ada di ArrayList bisa gunakan pengulangan For Each, Contohnya :
Sub ContohArrayList() Dim item As Variant For Each item In Buah Debug.Print item Next item End Sub
Didalam ArrayList memiliki sebuah method untuk melakukan mengurutkan data.
Perngurutan Array ini bisa dilakukan dengan Ascending ataupun Descending.
Untuk contoh penggunaan pengurutan data array bisa dilihat dibawah ini.
Sub ContohArrayList() Dim Buah As Object Set Buah = CreateObject("System.Collections.ArrayList") ' Menambahkan Item Baru Buah.Add "Apel" Buah.Add "Jambu" Buah.Add "Semangka" Buah.Add "Jeruk" 'Melakukan Pengurutan Ascending Buah.Sort 'Melakukan Pengurutan Descending Buah.Reverse End Sub
Selain mengurutkan, ArrayList juga memiliki kemampuan untuk melakukan cloning atau menduplikat dirinya sendiri menjadi variable baru.
Method yang digunakan adalah Clone, untuk contohnya bisa dilihat dibawah ini
Sub ContohArrayList() Dim Buah As Object Set Buah = CreateObject("System.Collections.ArrayList") ' Menambahkan Item Baru Buah.Add "Apel" Buah.Add "Jambu" Buah.Add "Semangka" Buah.Add "Jeruk" 'Deklarasi variable Baru Dim Buah2 As Object Set Buah2 = Buah.Clone End Sub
Pada Script diatas, Buah di duplikasi menjadi Buah2. Sehingga 2 variable ini memiliki Nilai yang sama.
Method lainnya yang dimiliki ArrayList adalah melakukan konversi ke Array dengan menggunakan method toArray
.
Ini tentu memiliki banyak fungsi diantara adalah bisa langsung memasukan ArrayList kedalam Range dengan menggunakan ToArray.
Sub ContohArrayList() Dim Buah As Object Set Buah = CreateObject("System.Collections.ArrayList") ' Menambahkan Item Baru Buah.Add "Apel" Buah.Add "Jambu" Buah.Add "Semangka" Buah.Add "Jeruk" 'Menyimpan di A1 kesamping Sheet1.Range("A1").Resize(1, Buah.Count).Value = Buah.toArray 'Menyimpan di A1 kebawah Sheet1.Range("A1").Resize(Buah.Count, 1).Value = Application.Transpose(Buah.toArray) End Sub
Pada Script diatas dengan menggunakan toArray, ArrayList bisa dimasukan langsung kedalam Range.