Tatasusunan dalam Visual Basic untuk Aplikasi

Tatasusunan dalam Visual Basic for Application ialah struktur yang biasanya menyimpan set pembolehubah yang berkaitan dengan jenis yang sama. Entri tatasusunan diakses oleh indeks berangkanya.

Sebagai contoh, terdapat sekumpulan 20 orang yang namanya perlu disimpan untuk digunakan kemudian dalam kod VBA. Seseorang hanya boleh mengisytiharkan 20 pembolehubah untuk memegang setiap nama, seperti:

Malapkan Pasukan_Ahli1 Sebagai Rentetan Pasukan Malap_Ahli2 Sebagai Rentetan ... Malapkan Pasukan_Ahli20 Sebagai Rentetan

Tetapi anda boleh menggunakan cara yang lebih mudah dan teratur – simpan senarai nama ahli pasukan dalam susunan 20 pembolehubah seperti Rentetan:

Malapkan Pasukan_Ahli(1 Hingga 20) Sebagai Rentetan

Dalam baris yang ditunjukkan di atas, kami telah mengisytiharkan tatasusunan. Sekarang mari kita tulis nilai untuk setiap elemennya, seperti ini:

Team_Members(1) = "John Smith"

Kelebihan tambahan menyimpan data dalam tatasusunan, berbanding dengan menggunakan pembolehubah berasingan, menjadi jelas apabila perlu untuk melakukan tindakan yang sama pada setiap elemen tatasusunan. Jika nama ahli pasukan disimpan dalam 20 pembolehubah berasingan, maka ia akan mengambil 20 baris kod untuk ditulis setiap kali untuk melakukan tindakan yang sama pada setiap satu daripada mereka. Walau bagaimanapun, jika nama disimpan dalam tatasusunan, maka anda boleh melakukan tindakan yang diingini dengan setiap nama tersebut menggunakan gelung mudah.

Cara ia berfungsi ditunjukkan di bawah dengan contoh kod yang mencetak nama setiap ahli pasukan secara berurutan dalam sel lajur. A lembaran kerja Excel aktif.

Untuk i = 1 Hingga 20 Sel(i,1).Nilai = Pasukan_Ahli(i) Seterusnya i

Jelas sekali, bekerja dengan tatasusunan yang menyimpan 20 nama adalah kurang menyusahkan dan lebih tepat daripada menggunakan 20 pembolehubah berasingan. Tetapi bagaimana jika nama ini bukan 20, tetapi 1000? Dan jika, sebagai tambahan, perlu menyimpan nama keluarga dan patronim secara berasingan?! Adalah jelas bahawa tidak lama lagi ia akan menjadi mustahil untuk mengendalikan jumlah data sedemikian dalam kod VBA tanpa bantuan tatasusunan.

Tatasusunan berbilang dimensi dalam Excel Visual Basic

Tatasusunan Visual Basic yang dibincangkan di atas dianggap sebagai satu dimensi. Ini bermakna mereka menyimpan senarai nama yang ringkas. Walau bagaimanapun, tatasusunan boleh mempunyai berbilang dimensi. Sebagai contoh, tatasusunan dua dimensi boleh dibandingkan dengan grid nilai.

Katakan anda ingin menyimpan angka jualan harian untuk bulan Januari untuk 5 pasukan yang berbeza. Ini memerlukan tatasusunan dua dimensi yang terdiri daripada 5 set metrik selama 31 hari. Mari kita isytiharkan tatasusunan seperti ini:

Malapkan Angka_Jualan Jan(1 Hingga 31, 1 Hingga 5) Sebagai Mata Wang

Untuk mengakses elemen tatasusunan Jan_Jualan_Angka, anda perlu menggunakan dua indeks yang menunjukkan hari dalam bulan dan nombor arahan. Sebagai contoh, alamat elemen yang mengandungi angka jualan untuk 2-oh pasukan untuk 15hb Januari akan ditulis seperti ini:

Jan_Jualan_Angka(15, 2)

Dengan cara yang sama, anda boleh mengisytiharkan tatasusunan dengan 3 atau lebih dimensi - cuma tambahkan dimensi tambahan pada pengisytiharan tatasusunan dan gunakan indeks tambahan untuk merujuk kepada unsur tatasusunan ini.

Mengisytiharkan Tatasusunan dalam Excel Visual Basic

Terdahulu dalam artikel ini, kita telah melihat beberapa contoh mengisytiharkan tatasusunan dalam VBA, tetapi topik ini patut dilihat dengan lebih dekat. Seperti yang ditunjukkan, tatasusunan satu dimensi boleh diisytiharkan seperti ini:

Malapkan Pasukan_Ahli(1 Hingga 20) Sebagai Rentetan

Pengisytiharan sedemikian memberitahu pengkompil VBA bahawa tatasusunan Anggota kumpulan terdiri daripada 20 pembolehubah yang boleh diakses pada indeks dari 1 hingga 20. Walau bagaimanapun, kami mungkin berfikir untuk menomborkan pembolehubah tatasusunan kami dari 0 hingga 19, dalam hal ini tatasusunan harus diisytiharkan seperti ini:

Malapkan Pasukan_Ahli(0 Hingga 19) Sebagai Rentetan

Malah, secara lalai, penomboran elemen tatasusunan bermula dari 0, dan dalam perisytiharan tatasusunan, indeks awal mungkin tidak ditentukan sama sekali, seperti ini:

Malapkan Pasukan_Ahli(19) Sebagai Rentetan

Pengkompil VBA akan menganggap entri sedemikian sebagai mengisytiharkan tatasusunan 20 elemen dengan indeks dari 0 hingga 19.

Peraturan yang sama digunakan apabila mengisytiharkan tatasusunan Visual Basic berbilang dimensi. Seperti yang telah ditunjukkan dalam salah satu contoh, apabila mengisytiharkan tatasusunan dua dimensi, indeks dimensinya dipisahkan dengan koma:

Malapkan Angka_Jualan Jan(1 Hingga 31, 1 Hingga 5) Sebagai Mata Wang

Walau bagaimanapun, jika anda tidak menentukan indeks permulaan untuk kedua-dua dimensi tatasusunan dan mengisytiharkannya seperti ini:

Malapkan Jan_Angka_Jualan(31, 5) Sebagai Mata Wang

maka entri ini akan dianggap sebagai tatasusunan dua dimensi, dimensi pertama yang mengandungi 32 elemen dengan indeks dari 0 hingga 31, dan dimensi kedua tatasusunan mengandungi 6 elemen dengan indeks dari 0 hingga 5.

Susunan dinamik

Semua tatasusunan dalam contoh di atas mempunyai bilangan dimensi yang tetap. Walau bagaimanapun, dalam banyak kes kita tidak tahu terlebih dahulu saiz tatasusunan kita. Kita boleh keluar dari situasi itu dengan mengisytiharkan tatasusunan yang besar, saiznya pastinya lebih besar daripada yang diperlukan untuk tugas kita. Tetapi penyelesaian sedemikian akan memerlukan banyak memori tambahan dan boleh melambatkan program. Terdapat penyelesaian yang lebih baik. Kita boleh menggunakan tatasusunan dinamik - ini ialah tatasusunan yang saiznya boleh ditetapkan dan ditukar beberapa kali semasa pelaksanaan makro.

Tatasusunan dinamik diisytiharkan dengan kurungan kosong, seperti ini:

Malapkan Team_Members() Sebagai Rentetan

Seterusnya, anda perlu mengisytiharkan dimensi tatasusunan semasa pelaksanaan kod menggunakan ungkapan ReDim:

ReDim Team_Ahli(1 Hingga 20)

Dan jika semasa pelaksanaan kod anda perlu menukar saiz tatasusunan sekali lagi, maka anda boleh menggunakan ungkapan ReDim sekali lagi:

Jika Saiz_Pasukan > 20 Maka Matikan semula Ahli_Pasukan(1 Kepada Saiz_Pasukan) Tamat Jika

Perlu diingat bahawa mengubah saiz tatasusunan dinamik dengan cara ini akan mengakibatkan kehilangan semua nilai yang disimpan dalam tatasusunan. Untuk menyimpan data yang sudah ada dalam tatasusunan, anda perlu menggunakan kata kunci Memeliharaseperti yang ditunjukkan di bawah:

Jika Saiz_Pasukan > 20 Maka Dim Semula Kekalkan Ahli_Pasukan(1 Kepada Saiz_Pasukan) Tamat Jika

Malangnya kata kunci Memelihara hanya boleh digunakan untuk menukar sempadan atas dimensi tatasusunan. Sempadan bawah tatasusunan tidak boleh diubah dengan cara ini. Juga, jika tatasusunan mempunyai berbilang dimensi, maka gunakan kata kunci Memelihara, hanya dimensi terakhir tatasusunan boleh diubah saiznya.

Sila tinggalkan balasan anda