Daftar Isi
Array adalah variabel yang menyimpan jenis data yang sama. Jika hanya ada satu baris atau satu kolom data, maka itu dikenal sebagai array satu dimensi. Namun, ketika ada lebih dari satu baris dan kolom, maka disebut array 2D. Kita menggunakan ReDim untuk mengubah ukuran larik di VBA. Selain itu, kita menggunakan Melestarikan kata kunci dengan ReDim untuk menjaga data lama tetap utuh. Artikel ini akan menunjukkan kepada Anda 2 cara cepat untuk " ReDim Preserve " a Larik 2D di Excel VBA .
Unduh Buku Kerja Praktik
Makro untuk ReDim Mempertahankan 2D.xlsm
2 Pendekatan Praktis untuk Mengawetkan Ulang Array 2D di Excel VBA
Ini adalah dataset dasar yang dibuat dari Larik 2D dengan tiga baris dan dua kolom. Pertama, kita akan membuat array ini. Kemudian, kita akan menambahkan kolom lain ke array ini. Kita akan menggunakan " ReDim Preserve "Selain itu, kita akan mendemonstrasikan apa yang terjadi jika kita tidak menggunakan ini.
Secara default, kita hanya bisa mengubah ukuran dimensi terakhir dari larik (yaitu kolom atau batas atas). Kita akan melakukan transpose pada larik, lalu mengubah dimensi terakhir, dan kemudian melakukan transpose lagi untuk mengubah ukuran kedua dimensi dari larik. Larik 2D di Excel VBA.
1. ReDim Mempertahankan Dimensi Terakhir Larik 2D
Pertama-tama, kita akan mendefinisikan Larik 2D sebagai dinamis. Kemudian, dengan menggunakan ReDim kita akan membuat array dengan tiga baris dan dua kolom. Terakhir, kita akan menggunakan pernyataan ReDim pernyataan lagi dengan Melestarikan kata kunci untuk meningkatkan batas atas dari larik dua dimensi.
Langkah-langkah:
- Untuk memulai, tekan ALT+F11 untuk memunculkan Modul VBA Atau, Anda bisa melakukan ini dari jendela Pengembang tab → pilih Visual Basic .
- Kemudian, dari Sisipkan tab → pilih Modul Kita akan mengetikkan kode VBA di sini.
- Berikutnya, ketikkan kode berikut ini dalam Modul jendela.
Sub Redim_Preserve_2D_Array_Row() Dim Our_Array() As Variant ReDim Our_Array(1 To 3, 1 To 2) Our_Array(1, 1) = "Rachel" Our_Array(2, 1) = "Ross" Our_Array(3, 1) = "Joey" Our_Array(1, 2) = 25 Our_Array(2, 2) = 26 Our_Array(3, 2) = 25 Range("C6:D8").Value = Our_Array End Sub
Perincian Kode VBA
- Pertama, kita memanggil Sub prosedur " Redim_Preserve_2D_Array_Row ".
- Kemudian, kita mendeklarasikan variabel Our_Array sebagai larik dinamis.
- Selanjutnya, kita mendefinisikan ukuran larik. Batas bawahnya adalah 3 , batas atasnya adalah 2 , dan keduanya dimulai dari 1 .
- Kemudian, kita menetapkan nilai ke larik.
- Setelah itu, kita memasukkan nilai-nilai ke C6:D8 rentang sel.
- Setelah itu, kita akan mengeksekusi kode.
- Jadi, Simpan yang Modul dan tekan Lari .
- Hasilnya, ia akan mengembalikan nilai ke rentang sel yang ditentukan. Kita bisa melihat bahwa " Rachel " berada dalam barisan 1 dan kolom 1 yang didefinisikan sebagai ( 1,1 ) dalam kode VBA.
- Sekarang, kita akan mengubah ukuran larik.
- Jadi, tambahkan ini ke kode sebelumnya dan hapus yang pertama Pernyataan Range.Value Selain itu, bagaimana kodenya terlihat seperti yang dapat Anda lihat dari snapshot di bawah ini.
ReDim Our_Array(1 To 3, 1 To 3) Our_Array(1, 3) = "Texas" Our_Array(2, 3) = "Mississippi" Our_Array(3, 3) = "Utah" Range("C6:E8").Value = Our_Array
- Di sini, kita telah meningkatkan batas atas dari ( 1 Untuk 2 ) ke ( 1 Untuk 3 ) oleh 1 .
- Kemudian, kita telah menambahkan nilai-nilai ke dalam larik.
- Sekarang jika kita mengeksekusi kode ini, maka kita akan melihat nilai sebelumnya tidak dipertahankan. Ini akan mengembalikan kosong untuk nilai sebelumnya.
- Sekarang, kita bisa memperbaiki ini dengan menambahkan Pertahankan kata kunci ke dalam Pernyataan ReDim .
- Akhirnya, kode lengkap kita akan menjadi seperti ini.
Option Explicit Sub Redim_Preserve_2D_Array_Row() Dim Our_Array() As Variant ReDim Our_Array(1 To 3, 1 To 2) Our_Array(1, 1) = "Rachel" Our_Array(2, 1) = "Ross" Our_Array(3, 1) = "Joey" Our_Array(1, 2) = 25 Our_Array(2, 2) = 26 Our_Array(3, 2) = 25 ReDim Preserve Our_Array(1 To 3, 1 To 3) Our_Array(1, 3) = "Texas" Our_Array(2, 3) = "Mississippi" Our_Array(3, 3) = "Utah" Range("C6:E8").Value =Our_Array End Sub
- Sekarang, jika kita Lari kode ini, maka outputnya akan seperti ini. Dengan demikian, kita akan " ReDim Preserve " dimensi terakhir dari sebuah Larik 2D di Excel VBA... Sekarang, metode selanjutnya akan menunjukkan kepada Anda bagaimana " ReDim Preserve " dan mengubah ukuran kedua dimensi larik.
Baca selengkapnya: VBA untuk Mendapatkan Nilai Unik dari Kolom ke Array di Excel (3 Kriteria)
Bacaan Serupa
- Cara Memberi Nama Array Tabel di Excel (Dengan Langkah Mudah)
- Excel VBA untuk Membaca File CSV ke dalam Array (4 Contoh Ideal)
- Cara Mengonversi Rentang ke Larik di Excel VBA (3 Cara)
- Excel VBA: Hapus Duplikat dari Array (2 Contoh)
2. ReDim Mempertahankan Kedua Dimensi Array 2D di Excel VBA
Dalam metode terakhir ini, kami akan menunjukkan kepada Anda langkah-langkah untuk mengubah ukuran dan " ReDim Preserve " Larik 2D Di sini, kita akan menggunakan Transpose VBA untuk mengubah ukuran batas bawah larik. Jika kita mencoba mengubah ukuran batas bawah larik pada metode pertama, maka kita akan melihat " Subscript di luar jangkauan "Sekarang, tanpa basa-basi lagi, mari kita lihat bagaimana kita bisa memperbaiki ini dan mencapai tujuan kita.
Langkah-langkah:
- Pertama, seperti yang ditunjukkan dalam metode pertama , memunculkan Modul jendela.
- Kedua, tambahkan baris kode berikut ke dalam kode pertama.
Our_Array = Application.Transpose(Our_Array) ReDim Preserve Our_Array(1 To 3, 1 To 4) Our_Array = Application.Transpose(Our_Array) Our_Array(4, 1) = "Monica" Our_Array(4, 2) = 26 Our_Array(4, 3) = "New Mexico" Range("C6:E9").Value = Our_Array
- Selain itu, kode untuk metode akhir terlihat seperti ini.
Option Explicit Sub ReDim_Preserve_2D_Array_Both_Dimensions() Dim Our_Array() As Variant ReDim Our_Array(1 To 3, 1 To 2) Our_Array(1, 1) = "Rachel" Our_Array(2, 1) = "Ross" Our_Array(3, 1) = "Joey" Our_Array(1, 2) = 25 Our_Array(2, 2) = 26 Our_Array(3, 2) = 25 ReDim Preserve Our_Array(1 To 3, 1 To 3) Our_Array(1, 3) = "Texas" Our_Array(2, 3) = "Mississippi" Our_Array(3, 3) = "Utah" Our_Array =Application.Transpose(Our_Array) ReDim Preserve Our_Array(1 To 3, 1 To 4) Our_Array = Application.Transpose(Our_Array) Our_Array(4, 1) = "Monica" Our_Array(4, 2) = 26 Our_Array(4, 3) = "New Mexico" Range("C6:E9").Value = Our_Array End Sub
Perincian Kode VBA
- Pertama, kita memanggil Sub prosedur " ReDim_Preserve_2D_Array_Both_Dimensions ".
- Kemudian, kode lainnya hingga kode Transpose VBA sama seperti pada kode pertama.
- Di sini, kita mentransposisi larik.
- Kemudian, kita meningkatkan batas atas larik.
- Setelah itu, kita mentranspose larik lagi. Oleh karena itu, pada akhirnya akan mengubah batas bawah.
- Selanjutnya, kita memasukkan nilai untuk larik yang diubah ukurannya sambil mempertahankan data lama.
- Terakhir, kita menulis nilai ke rentang sel C6:E9 .
- Setelah itu, seperti yang ditunjukkan dalam metode pertama , Lari kode ini.
- Dengan demikian, kita bisa memvisualisasikan bagaimana kode ini mempertahankan Larik 2D menggunakan " ReDim Preserve " dan Transpose VBA fungsi.
Baca selengkapnya: VBA untuk Mengubah Urutan Larik di Excel (3 Metode)
Hal-hal yang Perlu Diingat
- ReDim Preserve tidak dapat mengubah batas bawah dari array. Untuk melakukannya, kita perlu menggunakan Transposisi fungsi.
- Kita hanya bisa menggunakan ReDim pada larik dinamis.
Kesimpulan
Kami telah menunjukkan kepada Anda dua cara cepat untuk " ReDim Preserve " a 2D array Jika Anda menghadapi masalah apa pun terkait metode ini atau memiliki umpan balik untuk saya, jangan ragu untuk berkomentar di bawah ini. Selain itu, Anda dapat mengunjungi situs kami ExcelWIKI untuk artikel-artikel terkait Excel lainnya. Terima kasih telah membaca, teruslah berprestasi!