Array dalam Visual Basic untuk Aplikasi

Array dalam Visual Basic for Application adalah struktur yang biasanya menyimpan set variabel terkait dari jenis yang sama. Entri array diakses dengan indeks numeriknya.

Misalnya, ada tim yang terdiri dari 20 orang yang namanya perlu disimpan untuk digunakan nanti dalam kode VBA. Seseorang cukup mendeklarasikan 20 variabel untuk menampung setiap nama, seperti:

Redupkan Team_Member1 Sebagai String Redupkan Team_Member2 Sebagai String ... Redupkan Team_Member20 Sebagai String

Tetapi Anda dapat menggunakan cara yang lebih sederhana dan lebih terorganisir – simpan daftar nama anggota tim dalam array 20 variabel seperti Tali:

Redup Team_Members(1 Sampai 20) Sebagai String

Pada baris yang ditunjukkan di atas, kami telah mendeklarasikan sebuah array. Sekarang mari kita tulis nilai untuk setiap elemennya, seperti ini:

Team_Members(1) = "John Smith"

Keuntungan tambahan dari menyimpan data dalam larik, dibandingkan dengan menggunakan variabel terpisah, menjadi jelas ketika diperlukan untuk melakukan tindakan yang sama pada setiap elemen larik. Jika nama anggota tim disimpan dalam 20 variabel terpisah, maka dibutuhkan 20 baris kode untuk menulis setiap kali untuk melakukan tindakan yang sama pada masing-masing variabel. Namun, jika nama disimpan dalam array, maka Anda dapat melakukan tindakan yang diinginkan dengan masing-masing nama menggunakan loop sederhana.

Cara kerjanya ditunjukkan di bawah ini dengan contoh kode yang mencetak nama setiap anggota tim secara berurutan di sel kolom. A lembar kerja Excel aktif.

Untuk i = 1 Sampai 20 Sel(i,1).Nilai = Team_Members(i) Selanjutnya i

Jelas, bekerja dengan array yang menyimpan 20 nama jauh lebih rumit dan lebih akurat daripada menggunakan 20 variabel terpisah. Tetapi bagaimana jika nama-nama ini bukan 20, tetapi 1000? Dan jika, di samping itu, diperlukan untuk menjaga nama keluarga dan patronimik secara terpisah?! Jelas bahwa akan segera menjadi sangat tidak mungkin untuk menangani volume data seperti itu dalam kode VBA tanpa bantuan array.

Array multidimensi di Excel Visual Basic

Array Visual Basic yang dibahas di atas dianggap satu dimensi. Ini berarti bahwa mereka menyimpan daftar nama yang sederhana. Namun, array dapat memiliki beberapa dimensi. Misalnya, array dua dimensi dapat dibandingkan dengan kisi nilai.

Katakanlah Anda ingin menyimpan angka penjualan harian untuk bulan Januari untuk 5 tim yang berbeda. Ini akan membutuhkan larik dua dimensi yang terdiri dari 5 set metrik selama 31 hari. Mari kita mendeklarasikan array seperti ini:

Redup Jan_Sales_ Figures(1 Hingga 31, 1 Hingga 5) Sebagai Mata Uang

Untuk mengakses elemen array Jan_Penjualan_Angka, Anda perlu menggunakan dua indeks yang menunjukkan hari dalam sebulan dan nomor perintah. Misalnya, alamat elemen yang berisi angka penjualan untuk 2-oh tim untuk 15 ini Januari akan ditulis seperti ini:

Jan_Sales_Angka(15, 2)

Dengan cara yang sama, Anda dapat mendeklarasikan array dengan 3 dimensi atau lebih – cukup tambahkan dimensi tambahan ke deklarasi array dan gunakan indeks tambahan untuk merujuk ke elemen array ini.

Mendeklarasikan Array di Excel Visual Basic

Sebelumnya di artikel ini, kita sudah melihat beberapa contoh mendeklarasikan array di VBA, tetapi topik ini layak untuk dilihat lebih dekat. Seperti yang ditunjukkan, array satu dimensi dapat dideklarasikan seperti ini:

Redup Team_Members(1 Sampai 20) Sebagai String

Deklarasi seperti itu memberi tahu kompiler VBA bahwa array Anggota tim terdiri dari 20 variabel yang dapat diakses pada indeks dari 1 hingga 20. Namun, kita mungkin berpikir untuk memberi penomoran variabel array kita dari 0 hingga 19, dalam hal ini array harus dideklarasikan seperti ini:

Redup Team_Members(0 Sampai 19) Sebagai String

Sebenarnya, secara default, penomoran elemen array dimulai dari 0, dan dalam deklarasi array, indeks awal mungkin tidak ditentukan sama sekali, seperti ini:

Redup Team_Members(19) Sebagai String

Kompiler VBA akan memperlakukan entri seperti itu sebagai mendeklarasikan array 20 elemen dengan indeks dari 0 hingga 19.

Aturan yang sama berlaku saat mendeklarasikan array Visual Basic multidimensi. Seperti yang telah ditunjukkan dalam salah satu contoh, saat mendeklarasikan array dua dimensi, indeks dimensinya dipisahkan dengan koma:

Redup Jan_Sales_ Figures(1 Hingga 31, 1 Hingga 5) Sebagai Mata Uang

Namun, jika Anda tidak menentukan indeks awal untuk kedua dimensi array dan mendeklarasikannya seperti ini:

Redup Jan_Sales_ Figures(31, 5) Sebagai Mata Uang

maka entri ini akan diperlakukan sebagai array dua dimensi, dimensi pertama yang berisi 32 elemen dengan indeks dari 0 hingga 31, dan dimensi kedua dari array berisi 6 elemen dengan indeks dari 0 hingga 5.

Array dinamis

Semua array dalam contoh di atas memiliki jumlah dimensi yang tetap. Namun, dalam banyak kasus kita tidak tahu sebelumnya berapa ukuran array kita seharusnya. Kita bisa keluar dari situasi ini dengan mendeklarasikan array besar, yang ukurannya pasti akan lebih besar dari yang diperlukan untuk tugas kita. Tetapi solusi seperti itu akan membutuhkan banyak memori ekstra dan dapat memperlambat program. Ada solusi yang lebih baik. Kita dapat menggunakan array dinamis – ini adalah array yang ukurannya dapat diatur dan diubah beberapa kali selama eksekusi makro.

Array dinamis dideklarasikan dengan tanda kurung kosong, seperti ini:

Redupkan Team_Members() Sebagai String

Selanjutnya, Anda perlu mendeklarasikan dimensi array selama eksekusi kode menggunakan ekspresi RedDim:

ReDim Team_Members(1 Sampai 20)

Dan jika selama eksekusi kode Anda perlu mengubah ukuran array lagi, maka Anda dapat menggunakan ekspresi ReDim lagi:

Jika Team_Size > 20 Kemudian Redim Team_Members(1 To Team_Size) End If

Perlu diingat bahwa mengubah ukuran array dinamis dengan cara ini akan mengakibatkan hilangnya semua nilai yang disimpan dalam array. Untuk menyimpan data yang sudah ada dalam array, Anda perlu menggunakan kata kunci Pertahankanseperti yang ditunjukkan di bawah ini:

Jika Team_Size > 20 Kemudian Redim Pertahankan Team_Members(1 To Team_Size) End If

Sayangnya kata kuncinya Pertahankan hanya dapat digunakan untuk mengubah batas atas dimensi array. Batas bawah array tidak dapat diubah dengan cara ini. Juga, jika array memiliki banyak dimensi, maka gunakan kata kunci Pertahankan, hanya dimensi terakhir dari array yang dapat diubah ukurannya.

Tinggalkan Balasan