Ingin mengotomatiskan tugas berulang di Excel menggunakan VBA? Pelajari cara menggunakan loop Untuk Setiap untuk memanipulasi data secara efisien di spreadsheet Anda.
Loops dan VBA berjalan bersamaan, dan untuk alasan yang bagus juga. Saat berurusan dengan objek Microsoft Office seperti buku kerja, lembar kerja, dan rentang, pengulangan dapat membantu Anda beralih di antara masing-masing objek dengan relatif mudah.
Meskipun kurang lebih semua loop VBA bekerja dengan baik dengan objek, loop "untuk setiap" adalah salah satu opsi terbaik untuk bekerja dengan koleksi objek. Jika Anda baru di Excel VBA dan ingin menguasai untuk setiap loop, Anda bisa belajar dari beberapa contoh ini dengan cepat. Ini semua yang perlu Anda ketahui tentang loop klasik ini.
Untuk Sintaks Setiap Loop
Sintaks for each loop sangat mirip dengan for loop biasa di Excel VBA. Berikut sintaksnya:
Untuk setiap variable_name di object_collection
[penyataan]
[penyataan]
[penyataan]
Nama_variabel berikutnya
Perulangan dimulai dengan kata kunci "untuk setiap"; Anda dapat menggunakan nama variabel apa pun, diikuti dengan koleksi objek. Objek di dalam untuk setiap loop bisa berupa sel, rentang, lembar, dan bahkan buku kerja. Begitulah keindahan dari lingkaran ini; itu memberi Anda fleksibilitas untuk bekerja dengan koleksi Excel yang berbeda.
Loop menggilir setiap nilai koleksi dan menyimpan referensi dalam nama variabel yang ditentukan. Setelah eksekusi, VBA mengeksekusi pernyataan yang tersimpan di dalam loop dan berpindah ke objek berikutnya dalam koleksi (file Berikutnya kata kunci sangat membantu di sini). Mari kita pahami struktur kode dengan contoh dasar.
Cara Menggunakan Untuk Setiap Loop di Excel VBA
Misalkan Anda ingin mencetak angka di sel A1 hingga A10. Pendekatan terbaik adalah menggunakan for each loop dengan fungsi range dan membiarkan kode melakukan yang diperlukan. Inilah cara Anda dapat melakukan tugas sederhana ini:
- Buka editor kode VBA dengan menekan Alt + F11.
- Masukkan modul dengan mengklik Modul pilihan dalam Menyisipkan tab.
- Buat sub-rutin menggunakan perintah sub() di jendela modul editor kode. Pastikan Anda menetapkan nama yang bermakna untuk sub-rutin tersebut. Untuk contoh ini, Anda dapat menggunakan nama untuk_setiap_loop.
Sekarang setelah dasar-dasarnya sudah selesai, saatnya untuk mulai menulis kode. Di dalam sub-rutin, ketikkan perintah berikut:
Sel redup sebagai jangkauan
Untuk setiap sel di dalam Lembar("Lembar1").Jangkauan("A1:A10")
sel.nilai = 10
sel berikutnya
Ketika kode dijalankan, file C variabel akan menyimpan nilai A1. Selanjutnya, saat beralih ke pernyataan di dalam loop, ia mengevaluasi perintah dan memasukkan nilai 10 di sel yang ditentukan, yaitu sel A1.
Terakhir, saat berpindah ke kata kunci Berikutnya, ia berpindah ke nilai berikutnya, yaitu sel A2. Loop berjalan hingga mencapai sel A10. Ini adalah hasil akhir:
Menggunakan Loop Dengan Objek: Sel, Lembar, dan Buku Kerja
Excel memiliki tiga tipe objek utama yang Anda gunakan secara rutin. Ini adalah sel, lembar, dan buku kerja. Inilah cara Anda dapat menggunakan loop dengan ketiga jenis objek.
Bekerja Dengan Sel dan Loop Bersama
Misalkan Anda ingin menambahkan nilai dan beberapa kondisi pemformatan ke rentang sel di Sheet1. Sebagai langkah pertama, Anda perlu menentukan kondisi di dalam loop, diikuti dengan perintah pemformatan.
Ketik kode berikut dalam sub-rutin.
Sub untuk_setiap_loop()
Dim c Sebagai Jangkauan
Untuk Setiap c Dalam Lembar("Lembar1").Jangkauan("A1:A10")
Dengan C
.Nilai = 10
.Font. Warna = vbRed
.Font. Tebal = BENAR
.Font. Dicoret = BENAR
AkhirDengan
c.selanjutnya
Akhir Sub
Itu dengan function berguna saat melakukan banyak fungsi dengan satu objek tertentu. Karena Anda ingin melakukan serangkaian tugas dengan variabel c, Anda dapat menggabungkan semuanya menggunakan fungsi with..end with.
Loop menyamakan nilai c dengan setiap nilai sel dan memasukkan nilai sebagai 10. Selain itu, itu mengubah warna sel menjadi merah, menebalkan nilainya, dan mencoretnya. Setelah menyelesaikan semua langkah, ia berpindah ke nilai yang ditentukan berikutnya dalam rentang.
Menggunakan Loop untuk Mengontrol Lembar
Mirip dengan contoh di atas, Anda dapat menggunakan for each loop untuk mengontrol sheet. Bagaimana kalau mengubah nama Sheet1 menjadi Sheet3 menggunakan VBA?
Anda dapat menggunakan kode berikut untuk mengganti nama lembar kerja yang ada di Excel menggunakan VBA:
Sub untuk_setiap_loop_sheets()
UntukSetiapshtDi dalamBuku Kerja ini.Lembar
Jika sht. Nama = "Lembar1" Kemudian
sht. Nama = "Lembar3"
AkhirJika
Sst selanjutnya
Akhir Sub
Kode melewati setiap lembar dalam buku kerja dan memeriksa nama setiap lembar. Jika bertemu dengan nama Sheet1, itu mengubahnya menjadi Sheet3. Itu berkembang melalui lembar yang tersisa, jika ada, di dalam buku kerja. Setelah eksekusi kode mencapai lembar terakhir, ia keluar dari loop dan subrutin.
Di antara beberapa kegunaan umum lainnya, Anda bisa menggabungkan beberapa lembar kerja menggunakan VBA dan perbarui konten dalam satu lembar menggunakan loop.
Beralih Melalui Buku Kerja Dengan Loop
Terakhir, Anda dapat menggunakan for each loop untuk beralih melalui buku kerja yang berbeda dan melakukan tugas tertentu. Mari kita tunjukkan fungsi ini dengan sebuah contoh.
Anda dapat menggunakan perintah VBA untuk menambahkan tiga buku kerja baru dan menutup semua buku kerja yang terbuka secara bersamaan. Inilah cara Anda melakukannya:
Sub loop_wrkbook()
Buku kerja redup sebagai buku kerja
Buku kerja.Menambahkan
Buku kerja.Menambahkan
Buku kerja.Menambahkan
Untuk Setiap Buku Kerja Dalam Buku Kerja
buku kerja.Menutup
Buku kerja berikutnya
Akhir Sub
Kode di atas juga akan menutup buku kerja makro Anda; pastikan Anda telah menyimpan kode Anda sebelum menjalankan kode ini.
Karena loop memiliki banyak kegunaan, Anda juga bisa menggabungkan data dari beberapa buku kerja menjadi satu buku kerja.
Menggunakan Pernyataan IF Bersarang Dengan Loop
Seperti contoh di atas, Anda dapat menggunakan pernyataan IF di dalam loop untuk memeriksa kondisi tertentu. Mari ubah warna latar belakang sel berdasarkan nilai sel.
Ada beberapa angka acak di sel A1:A20. Anda dapat menulis satu lingkaran untuk menggilir setiap sel yang diberikan dalam rentang; jika nilai sel kurang dari 10, warna sel akan berubah menjadi merah. Jika nilai sel melebihi 10, seharusnya berubah menjadi hijau. Gunakan kode berikut untuk tujuan ini:
Sub loop_w_if()
Dim c Sebagai Jangkauan
Untuk Setiap c Dalam Lembar("Lembar4").Jangkauan("A1:A20")
JikaC.Nilai < 10 Kemudian
C. Pedalaman. Indeks Warna = 3
Kalau tidak: C. Pedalaman. Indeks Warna = 4
AkhirJika
c.selanjutnya
Akhir Sub
Seperti inilah tampilan outputnya:
Menggunakan Loop di Excel VBA
Excel VBA tidak terbatas hanya untuk setiap loop. Ada berbagai loop bermanfaat yang memungkinkan Anda melakukan berbagai fungsi dengan mudah. Tawaran perpisahan untuk tugas-tugas manual yang biasa-biasa saja, karena loop VBA seperti loop for, lakukan while, dan lakukan sampai loop masuk untuk membuat hidup Anda lebih mudah.