VBA ReDim - Tangani Array Dinamik menggunakan VBA ReDim Preserve

Penyata ReDim Excel VBA

Pernyataan VBA Redim mirip dengan pernyataan redup tetapi perbezaannya adalah bahawa ia digunakan untuk menyimpan atau memperuntukkan lebih banyak ruang penyimpanan atau mengurangkan ruang penyimpanan yang dimiliki oleh pemboleh ubah atau array, sekarang ada dua aspek penting yang digunakan dengan pernyataan adalah Preserve, jika preserve digunakan dengan pernyataan ini maka ia membuat array baru dengan ukuran yang berbeza dan jika preserve tidak digunakan dengan pernyataan ini maka ia hanya mengubah ukuran array dari pemboleh ubah semasa.

Susunan adalah bahagian penting dalam pengekodan VBA. Dengan menggunakan tatasusunan, kita dapat menyimpan lebih dari satu nilai dalam pemboleh ubah yang sama yang kita tetapkan. Seperti bagaimana kita menyatakan pembolehubah menggunakan kata "Dim", kita perlu menyatakan nama array dengan menggunakan "Dim" juga.

Untuk menyatakan nama array, kita perlu mengenal pasti jenis array yang akan kita tentukan. Dalam tatasusunan, kami mempunyai 5 jenis.

  1. Array Statik
  2. Array Dinamik
  3. Array Satu Dimensi
  4. Array Dua Dimensi
  5. Array Pelbagai Dimensi

Dalam array statik di excel, kita akan menentukan nilai yang lebih rendah dan nilai atas array dengan lebih awal sambil menyatakan pemboleh ubah. Contohnya, lihat contoh di bawah.

Kod:

Sub ReDim_Contoh1 () Dim MyArray (1 Hingga 5) Sebagai Sub String End Sub

Di sini MyArray adalah nama array, yang dapat menyimpan nilai dari 1 hingga 5. MyArray dapat menyimpan 5 hasil yang berbeda di dalamnya seperti yang berikut.

Kod:

Sub ReDim_Example1 () Dim MyArray (1 To 5) As String MyArray (1) = "Hi" MyArray (2) = "Good" MyArray (3) = "Morning" MyArray (4) = "Have a" MyArray (5) = "Hari Bagus" Sub

Array Dinamik dengan Penyataan ReDim

Tetapi dalam array Dynamic, ini tidak berlaku. Kami tidak akan memutuskan nilai yang lebih rendah dan nilai atas lebih awal; sebaliknya, kita hanya menentukan nama array dan menetapkan jenis data.

Sub ReDim_Example1 () Dim MyArray () Sebagai String End Sub

Untuk menjadikan nama array dinamis, kita harus menyatakannya dengan kata "Dim" terlebih dahulu, tetapi jangan memutuskan ukuran array terlebih dahulu. Kami hanya menamakan array dengan nilai kosong di dalam kurungan (). Apabila array tidak termasuk ukuran, maka ia dianggap sebagai array dinamik.

Dim MyArray () Sebagai Rentetan

Sebaik sahaja anda menyebutkan ukuran array dalam kurungan, ia akan menjadi array statik. Dim MyArray (1 hingga 5) Sebagai Rentetan

Dalam array dinamik, kami selalu mengubah ukuran ukuran array dengan menggunakan kata "ReDim" di baris seterusnya kod.

ReDim MyArray (1 hingga 6) Sebagai Rentetan

Setiap nilai yang tersimpan pada nama array pada langkah-langkah sebelumnya, yaitu, menggunakan pernyataan "Dim", tetap kosong, dan ukuran yang kami nyatakan menggunakan "ReDim" menjadi ukuran baru array.

Contohnya menggunakan Pernyataan Redim VBA

Contoh # 1

Lihat contoh penggunaan pernyataan "ReDim" secara praktikal. Ikuti langkah di bawah untuk menerapkan "ReDim."

Langkah 1: Buat nama makro terlebih dahulu.

Langkah 2: Menyatakan nama array sebagai rentetan.

Kod:

Sub ReDim_Example1 () Dim MyArray () Sebagai String End Sub

Langkah 3: Sekarang gunakan perkataan "Redim" dan tetapkan ukuran array.

Kod:

Sub ReDim_Example1 () Dim MyArray () Sebagai String ReDim MyArray (1 Hingga 3) Sub Akhir

Langkah 4: Jadi sekarang nama array "MyArray" dapat menyimpan hingga 3 nilai di sini. Berikan nilai kepada 3 tatasusunan ini seperti yang berikut.

Kod:

Sub ReDim_Example1 () Dim MyArray () Sebagai String ReDim MyArray (1 To 3) MyArray (1) = "Welcome" MyArray (2) = "to" MyArray (3) = "VBA" End Sub

Jadi, susunan pertama sama dengan kata "Selamat Datang" susunan kedua sama dengan kata "to", dan susunan ketiga sama dengan kata "VBA."

Langkah 5: Sekarang simpan nilai array ini dalam sel.

Kod:

Sub ReDim_Example1 () Dim MyArray () Sebagai String ReDim MyArray (1 To 3) MyArray (1) = "Welcome" MyArray (2) = "to" MyArray (3) = "VBA" Range ("A1"). Nilai = Rentang MyArray (1) ("B1"). Nilai = Rentang MyArray (2) ("C1"). Nilai = MyArray (3) Sub Akhir

Langkah 6: Sekiranya anda menjalankan kod ini, kita harus mempunyai nilai ini di sel A1, B1, dan C1.

Contoh # 2 - Ubah saiz Saiz Array Sambil Mengingat Nilai Lama.

Setelah nama array diberikan nilai, kita juga dapat mengubah ukurannya pada setiap saat dalam prosedur dengan menggunakan kata "ReDim Preserve."

Assume you have already declared an array name and assigned values to those array name like the below one.

Now you would like to increase the array length by 2, i.e., 5. In this case, we can use the word VBA “ReDim Preserve” to resize the array length to remember the old values as well.

Code:

Sub ReDim_Example2() Dim MyArray() As String ReDim MyArray(3) MyArray(1) = "Welcome" MyArray(2) = "to" MyArray(3) = "VBA" ReDim Preserve MyArray(4) MyArray(4) = "Character 1" Range("A1").Value = MyArray(1) Range("B1").Value = MyArray(2) Range("C1").Value = MyArray(3) Range("D1").Value = MyArray(4) End Sub

Now we can assign two more values to the array.

Code:

Sub ReDim_Example2() Dim MyArray() As String ReDim MyArray(3) MyArray(1) = "Welcome" MyArray(2) = "to" MyArray(3) = "VBA" ReDim Preserve MyArray(4) MyArray(4) = "Character 1" Range("A1").Value = MyArray(1) Range("B1").Value = MyArray(2) Range("C1").Value = MyArray(3) Range("D1").Value = MyArray(4) End Sub

Now store these values in cells.

Code:

Sub ReDim_Example2() Dim MyArray() As String ReDim MyArray(3) MyArray(1) = "Welcome" MyArray(2) = "to" MyArray(3) = "VBA" ReDim Preserve MyArray(4) MyArray(4) = "Character 1" Range("A1").Value = MyArray(1) Range("B1").Value = MyArray(2) Range("C1").Value = MyArray(3) Range("D1").Value = MyArray(4) End Sub

Now run the macro and see what happens.

So we got the new word in the D1 cell.

Sebab mengapa kita perlu menggunakan kata "preserve" kerana array harus mengingat nilai array lama dalam prosedur.

Apabila anda mengabaikan perkataan "pelihara", ia tidak akan mengingati nilai lama.

Perkara Yang Perlu Diingati Di Sini

  • ReDim hanya dapat menyimpan nilai terakhir dari array, bukan nilai yang banyak. Sebagai contoh, kita tidak dapat menggunakan kod ini "ReDim Preserve MyArray (4 hingga 5)". Ini akan membuang kesilapan.
  • Kami tidak dapat menyusun semula tatasusunan statik. Sebaik sahaja anda menetapkan ukuran array di dalam kurungan, ia menjadi susunan statik.
  • Dengan menggunakan ReDim, kita tidak dapat mengubah jenis data. Array boleh menyimpan apa sahaja jenis data yang telah kami tetapkan semasa menyatakan array.

Artikel menarik...