Skip to content Skip to sidebar Skip to footer

Array dalam Macro VBA Excel

Suatu array atau baris atau deret berperan sebagai sebuah wadah penyimpanan untuk elemen yaitu suatu kelompok nilai individual dari jenis data yang sama.

Anda dapat menempatkan array dengan menentukan elemen yang dikenali dalam macro Anda, atau bisa juga membiarkan VBA menempatkan array pada saat macro berjalan jika Anda tidak tahu berapa banyak elemen pada array.

Dalam dunia nyata untuk menganalogikan konsep array agar lebih mudah dipahami, anggap saja Anda seorang kolektor uang kertas kuno bergambar/seri Jenderal Sudirman yang Anda simpan sebanyak 6 lembar.

Dari keenam lembar uang kertas tersebut hanya lima lembar saja yang Anda minati.

Pada macro Anda buat variabel contohnya UangKertas, dan membuat suatu array String dengan macro berikut:

Sub UangKunoJendSudirman()
Dim UangKertas (1 to 5) as String
UangKertas (1) = "Satu Rupiah"
UangKertas (2) = "Dua Setengah Rupiah"
UangKertas (3) = "Lima Rupiah"
UangKertas (4) = "Dua Puluh Lima Rupiah"
UangKertas (5) = "Lima Puluh Rupiah"
MsgBox UangKertas(2)
End Sub

Yang dimaksud dengan elemen dalam suatu Array adalah variabel, dan Anda dapat mengacu pada elemen tertentu berdasarkan nomor urutannya dalam array.

Dikarenakan nama Array adalah UangKertas dan kotak pesan mengacu pada elemen kedua pada array maka saat Anda menjalankan macro tersebut, kotak pesan yang ditampilkan adalah Dua Setengah Rupiah.

Anda bisa menggunakan loop untuk setiap elemen dalam kumpulan tersebut, yang artinya menampilkan setiap nilai uang kertas dengan mengacu pada nomor urutan di dalam array UangKertas.

Macro berikut menunjukkan cara menampilkan setiap elemen nilai uang kertas pada kotak pesan:

Sub LoopUangKunoJendSudirman()
Dim UangKertas(1 To 5) As String
Dim Penghitung As Integer
UangKertas (1) = "Satu Rupiah"
UangKertas (2) = "Dua Setengah Rupiah"
UangKertas (3) = "Lima Rupiah"
UangKertas (4) = "Dua Puluh Lima Rupiah"
UangKertas (5) = "Lima Puluh Rupiah"
For Penghitung = 1 To 5
MsgBox UangKertas(Penghitung), , "Favorite #" & Penghitung
Next Penghitung
End Sub

Untuk menempatkan suatu barisan sel dengan elemen-elemen yang ada dalam array, macro berikut mempertunjukkan bagaimana cara membuat daftar pada barisan sel A1:A5:

Sub UangKunoJendSudirmanBS()
Dim UangKertas(1 To 5) As String
Dim Penghitung As Integer
UangKertas (1) = "Satu Rupiah"
UangKertas (2) = "Dua Setengah Rupiah"
UangKertas (3) = "Lima Rupiah"
UangKertas (4) = "Dua Puluh Lima Rupiah"
UangKertas (5) = "Lima Puluh Rupiah"
For Penghitung = 1 To 5
Cells(Penghitung, 1).Value = UangKertas(Penghitung)
Next Penghitung
End Sub

Array diterjemahkan sebagai satu variabel oleh VBA, namun di dalam array adalah sekumpulan dua atau lebih elemen yang dapat digunakan secara terpisah.

Anda bisa juga mengacu pada setiap elemen menurut nomor urutannya dalam array, atau menggunakan loop untuk setiap nomor urut secara bergiliran.

Array seringkali digunakan untuk mewakili data dalam daftar atau tabel, yang mana setiap poin dalam daftar merupakan dari jenis data yang sama.

Sebagai contoh suatu daftar nama relasi bisnis Anda yang mana semuanya berjenis data String, atau sebuah tabel rata-rata pengunjung harian yang disajikan dalam data bulanan maka semua berjenis data Double.

Array bisa dibilang sangat serbaguna untuk menyimpan dan memanipulasi kepingan data melalui satu variabel array, yang jauh lebih efisien jika dibandingkan dengan memasukkan variabel ke setiap elemen dalam array.

Array uang kertas kuno seri Jendral Sudirman merupakan suatu contoh array satu dimensi.

Dalam macro UangKunoJendSudirmanBS, kelima uang kertas terdaftar di barisan sel A1:A5.

VBA menerjemahkan array sebagai satu dimensi sebab elemen dimuat hanya dalam satu kolom.

Dalam contoh gambar di bawah ini terlihat daftar uang kertas kuno dengan penambahan kolom kedua yaitu daftar dalam angka nominal sehingga tabel memiliki dua kolom.

Anda dapat membuat array dua-dimensi berjenis data String.

Macro berikut menggunakan loop melalui baris 1 hingga ke 5 pada kolom A dan baris 1 hingga 5 pada kolom B.

Setiap nilai dalam array tersimpan dalam memori dengan dua variabel berjenis Integer untuk mengumpulkan baris dan kolom data.

Dalam contoh, kotak pesan akan menampilkan nilai 2.5 karena variabel A(2, 2) menghasilkan nilai string dari elemen pada letak baris kedua dan kolom kedua:

Sub ArrayDuaDimensi()
Dim A(1 To 5, 1 To 2) As String
Dim B As Integer, C As Integer
For B = 1 To 5
For C = 1 To 2
A(B, C) = Cells(B, C).Value
Next C
Next B
MsgBox A(2, 2)
End Sub

Menetapkan array sama saja seperti variabel yaitu dimulai dengan menuliskan statement Dim kemudian diikuti dengan nama array dan jenis datanya.

Nama array diakhiri dengan sepasang tanda kurung untuk menunjukkan bahwa array selalu diikuti urutan elemen, itu pun jika diketahui maka masukkan saja dalam tanda kurung tersebut.

Contohnya, statement di bawah ini menetapkan array dengan nama Hari, yang mana isinya adalah urutan nama hari dalam sepekan yaitu 7 hari yang diwakili dengan angka yang dimulai dari nol hingga enam. 

Perhatikan bahwa jenis datanya adalah String karena urutan hari nilainya memang dalam format tulisan misalnya Minggu, Senin, Selasa dan seterusnya. 

Dim Hari(6) As String

Anda juga dapat menetapkan array dengan menggunakan kata kunci Public, Private, atau Static.

Contohnya jika Anda ingin menetapkan suatu array sebagai Public, maka tempatkan statement di atas module sehingga Anda bisa berbagi array melalui macro.

Seperti dalam contoh dua macro di bawah ini yang akan menampilkan kotak pesan berisi elemen array Assalamualaikum dan Wassalamualaikum:

1. Tempatkan statement di atas module 

Public Salam(1) As String

2. Buat macro pertama contohnya ContohPublicArray:

Sub ContohPublicArray()

3. Isi array Salam beserta nilainya masing-masing:

Salam(0) = "Assalamualaikum"
Salam(1) = "Wassalamualaikum"

4. Jalankan macro kedua untuk menampilkan array Salam:

Run "UjiPublicArray"

5. Akhiri macro pertama:

End Sub

6. Buat macro kedua:

Sub UjiPublicArray()

7. Tampilkan nilai pada array Salam:

Dim a As Integer
For a = 0 To UBound(Salam, 1)
MsgBox Salam(a)
Next a

Kode lengkapnya adalah:

Public Salam(1) As String
Sub ContohPublicArray()
Salam(0) = "Assalamualaikum"
Salam(1) = "Wassalamualaikum"
Run "UjiPublicArray"
End Sub
Sub UjiPublicArray()
Dim a As Integer
For a = 0 To UBound(Salam, 1)
MsgBox Salam(a)
Next a
End Sub

Array Static adalah array yang memiliki ukuran pada statement yang ditetapkan.

Contohnya statement di bawah ini menetapkan array dalam 10 baris dan 10 kolom dengan jenis data Integer:

Dim Salam(9, 9) as Integer

Demikian pembahasan tentang Array dalam Macro VBA Excel, semoga postingan ini bermanfaat.