VBA ReDim - Tangani Dynamic Arrays menggunakan VBA ReDim Preserve

Pernyataan ReDim VBA Excel

Pernyataan VBA Redim mirip dengan pernyataan redup tetapi perbedaannya adalah digunakan untuk menyimpan atau mengalokasikan lebih banyak ruang penyimpanan atau mengurangi ruang penyimpanan yang dimiliki variabel atau array dengannya, sekarang ada dua aspek penting yang digunakan dengan pernyataan adalah Preserve, jika melestarikan digunakan dengan pernyataan ini maka itu membuat larik baru dengan ukuran berbeda dan jika melestarikan tidak digunakan dengan pernyataan ini maka itu hanya mengubah ukuran larik dari variabel saat ini.

Array adalah bagian penting dari pengkodean VBA. Dengan menggunakan array, kita dapat menyimpan lebih dari satu nilai dalam variabel yang sama yang kita definisikan. Seperti bagaimana kita mendeklarasikan variabel menggunakan kata "Dim," kita perlu mendeklarasikan nama array dengan menggunakan "Dim" juga.

Untuk mendeklarasikan nama array, pertama-tama kita perlu mengidentifikasi jenis array yang akan kita definisikan. Dalam array, kami memiliki 5 tipe.

  1. Array Statis
  2. Array Dinamis
  3. Array Satu Dimensi
  4. Array Dua Dimensi
  5. Array Multi-Dimensi

Dalam array statis di excel, kita akan memutuskan nilai yang lebih rendah dan nilai atas dari array jauh-jauh hari saat mendeklarasikan variabel. Misalnya, lihat contoh di bawah ini.

Kode:

Sub ReDim_Example1 () Dim MyArray (1 To 5) As String End Sub

Di sini MyArray adalah nama dari array, yang dapat menampung nilai dari 1 sampai 5. MyArray dapat menampung 5 hasil berbeda di dalamnya seperti di bawah ini.

Kode:

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) = "Nice Day" End Sub

Dynamic Array dengan Pernyataan ReDim

Tetapi dalam Dynamic array, ini tidak terjadi. Kami tidak akan memutuskan nilai yang lebih rendah dan nilai atas jauh-jauh hari; sebagai gantinya, kita hanya mendefinisikan nama array dan menetapkan tipe data.

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

Untuk membuat nama array menjadi dinamis, kita perlu mendeklarasikannya dengan kata "Dim" terlebih dahulu, tetapi jangan memutuskan ukuran array dengan baik sebelumnya. Kami hanya memberi nama array dengan nilai kosong di dalam tanda kurung (). Jika larik tidak menyertakan ukuran, maka larik diperlakukan sebagai larik dinamis.

Redupkan MyArray () Sebagai String

Saat Anda menyebutkan ukuran larik di dalam kurung, itu menjadi larik statis. Redupkan MyArray (1 hingga 5) Sebagai String

Dalam larik dinamis, kami selalu mengubah ukuran larik dengan menggunakan kata "ReDim" di baris kode berikutnya.

ReDim MyArray (1 hingga 6) Sebagai String

Nilai apa pun yang disimpan ke nama array di langkah sebelumnya, misalnya, menggunakan pernyataan "Dim", adalah null, dan ukuran yang kami nyatakan menggunakan "ReDim" menjadi ukuran baru dari array tersebut.

Contoh untuk menggunakan Pernyataan VBA Redim

Contoh 1

Lihat contoh penggunaan pernyataan "ReDim" secara praktis. Ikuti langkah-langkah di bawah ini untuk menerapkan "ReDim".

Langkah 1: Buat nama makro terlebih dahulu.

Langkah 2: Deklarasikan nama array sebagai string.

Kode:

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

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

Kode:

Sub ReDim_Example1 () Dim MyArray () As String ReDim MyArray (1 To 3) End Sub

Langkah 4: Jadi sekarang nama array "MyArray" dapat menampung hingga 3 nilai di sini. Tetapkan nilai ke 3 larik ini seperti di bawah ini.

Kode:

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

Jadi, larik pertama sama dengan kata "Selamat Datang", larik kedua sama dengan kata "ke", dan larik ketiga sama dengan kata "VBA".

Langkah 5: Sekarang simpan nilai array ini dalam sel.

Kode:

Sub ReDim_Example1 () Dim MyArray () As String ReDim MyArray (1 To 3) MyArray (1) = "Welcome" MyArray (2) = "to" MyArray (3) = "VBA" Range ("A1"). Nilai = MyArray (1) Range ("B1"). Value = MyArray (2) Range ("C1"). Value = MyArray (3) End Sub

Langkah 6: Jika Anda menjalankan kode ini, kita harus memiliki nilai ini masing-masing di sel A1, B1, dan C1.

Contoh # 2 - Ubah Ukuran Array Size Sambil Mengingat Nilai-Nilai Lama.

Setelah nama array diberi nilai, kita juga dapat mengubah ukuran kapan saja 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.

Alasan mengapa kita perlu menggunakan kata "preservasi" karena array harus mengingat nilai array yang lama dalam prosedur.

Saat Anda mengabaikan kata "melestarikan", itu tidak akan mengingat nilai-nilai lama.

Hal yang Perlu Diingat Di Sini

  • ReDim hanya dapat menampung nilai terakhir dari larik, bukan banyak nilai. Misalnya, kita tidak dapat menggunakan kode ini "ReDim Preserve MyArray (4 to 5)". Ini akan membuang kesalahan.
  • Kami tidak dapat mengubah array statis. Saat Anda menetapkan ukuran larik di dalam tanda kurung, itu menjadi larik statis.
  • Menggunakan ReDim, kami tidak dapat mengubah tipe datanya. Array dapat menampung tipe data apa pun yang telah kita tetapkan saat mendeklarasikan array.

Artikel yang menarik...