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.