Vba for loop (untuk berikutnya, untuk masing-masing)
Poin-poin penting
- VBA For loop adalah tipe loop tetap.
- Tidak mungkin menggunakan salah satu loop ini saat merekam makro .
Untuk putaran berikutnya
VBA FOR NEXT adalah loop tetap yang menggunakan counter untuk mengeksekusi iterasi. Sederhananya, Anda perlu menentukan berapa kali Anda ingin menjalankan perulangan, dan setelah mencapai jumlah perulangan tersebut, perulangan akan otomatis berhenti. Inilah sebabnya mengapa ini merupakan loop tetap dan paling populer di kalangan pengembang VBA.
Sintaksis
Berikut adalah sintaks dari loop VBA For Next:
For counter = Start To End [Step stepsize] [statements] Next [counter]
- Counter : Ini adalah variabel yang menyimpan jumlah pengulangan dan meningkatkan nilainya dengan setiap pengulangan. Misalnya, jika perulangan berada pada iterasi kelima, nilai penghitungnya akan menjadi lima, dan setelah perulangan menjalankan instruksi untuk iterasi kelima, nilai penghitungnya berubah menjadi enam.
- Mulai : Ini adalah variabel numerik yang menyimpan nilai awal penghitung.
- Akhir : Ini adalah variabel numerik yang menyimpan nilai akhir penghitung.
- Ukuran langkah : Variabel ini menentukan peningkatan atau penurunan nilai penghitung yang besar. Secara default, ukuran langkahnya adalah satu, namun Anda juga dapat menggunakan nilai positif atau negatif apa pun.
- Pernyataan : Ini adalah sekumpulan kode yang ingin Anda jalankan pada setiap iterasi perulangan For Next.
- Berikutnya : Ini adalah pernyataan akhir untuk iterasi perulangan dan menggunakan nilai penghitung untuk memberitahu VBA agar mengulangi perulangan dan setelah penghitung mencapai nilai akhir, maka penghitung akan mengakhiri perulangan.
Contoh yang perlu dipahami untuk loop berikutnya
Untuk memahami cara menggunakannya untuk loop berikutnya, mari tulis kode sederhana untuk menambahkan nomor seri di kolom.
Izinkan saya menjelaskan lebih lanjut: Kita perlu menulis kode yang dapat berpindah dari sel yang dipilih ke 10 sel berikutnya satu per satu dan menambahkan nomor seri hanya pada cuplikan di bawah.
Untuk menggunakan For Next Loop, Anda dapat mengikuti langkah-langkah berikut:
- Pertama, Anda perlu mendeklarasikan variabel yang dapat Anda gunakan untuk menyimpan nilai penghitung.
- Selanjutnya, kita perlu menetapkan nilai penghitung ke variabel.
- Sekarang saatnya menulis kode untuk loop, jadi di baris pertama Anda perlu menggunakan variabel counter dan mengatur nilai awal dan akhir. Di sini, di kode ini Anda memiliki variabel ‘i’ sebagai nilai akhir.
- Dari sana, Anda perlu menulis kode yang dapat menambahkan nomor seri ke dalam sel aktif dan kemudian melanjutkan ke sel berikutnya. Saat nilai penghitung meningkat pada setiap iterasi, Anda dapat menggunakannya untuk memasukkan nomor seri di sel aktif dan setelah itu Anda dapat menggunakan shift untuk memindahkan pilihan ke sel berikutnya ke bawah.
- Pada akhirnya, gunakan kata kunci next dan variabel counter untuk menyelesaikan kode loop.
Sub AddSerialNumbers() Dim i As Integer i = 10 For i = 1 To i ActiveCell.Value = i ActiveCell.Offset(1, 0).Activate Next i End Sub
Anda dapat melihat pada snapshot di bawah ini, ketika saya menjalankan kode ini, kode ini dimulai dari sel yang dipilih dengan memasukkan nomor seri dan kemudian berpindah ke sel berikutnya di setiap iterasi.
Seperti yang Anda ketahui, For Next adalah perulangan tetap dan dalam kode ini ketika Anda menetapkan nilai numerik, ia memberitahu VBA untuk menjalankan perulangan sebanyak itu.
Dan Anda dapat melihat cuplikan di bawah ini yang saya ambil pada iterasi kedua dari loop di mana nilai variabel counter “i” adalah dua.
Poin yang ingin saya sampaikan adalah bahwa variabel count mengubah nilainya setiap iterasi dan memasukkan nilai tersebut ke dalam sel aktif, kemudian menggeser mengaktifkan sel berikutnya ke bawah yang menyelesaikan iterasi.
Pada akhirnya, kata kunci “Berikutnya” adalah VBA untuk kembali ke baris pertama dari loop dan mengulanginya. Seperti yang Anda lihat di sintaks For Next, Anda juga dapat menggunakan nilai langkah dalam loop untuk mengoperasikan penghitung berdasarkan nilai tersebut.
Jadi jika Anda menggunakan dua sebagai nilai langkah, kodenya akan terlihat seperti berikut.
Sub AddSerialNumbers() Dim i As Integer i = 10 For i = 1 To i Step 2 ActiveCell.Value = i ActiveCell.Offset(1, 0).Activate Next i End Sub
Dan ketika Anda menjalankan kode ini, akan ada aktivitas seperti cuplikan di bawah ini.
Saat Anda menggunakan nilai langkah (seperti langkah 2, yang Anda gunakan pada kode di atas), VBA mengabaikan setiap iterasi ke-2 dalam loop, dan seperti yang Anda lihat, Anda memiliki lima angka dengan selisih satu di setiap angka.
Catatan : Pada contoh di atas, Anda menggunakan ‘i’ sebagai variabel penghitung, namun Anda juga dapat menggunakan nama lain sesuai kenyamanan Anda.
Untuk setiap loop berikutnya
VBA FOR EACH NEXT adalah loop tetap yang dapat melakukan loop melalui semua objek dalam koleksi. Di For Each Next, Anda tidak perlu menentukan jumlah iterasi. Sebagai gantinya, Anda dapat menentukan kumpulan objek, dan objek tersebut akan dapat melakukan iterasi melalui semua objek tersebut satu per satu.
Misalnya : jika Anda ingin menelusuri semua sel dalam suatu rentang. Dalam hal ini rentangnya adalah koleksi dan selnya adalah objek yang Anda miliki.
Sintaksis
Berikut adalah sintaks VBA untuk setiap loop berikutnya:
For Each Object In Collection [statements] Next [object]
- Objek : Ini mewakili satu-satunya objek dalam kumpulan objek yang Anda ulangi. Pada setiap iterasi, berpindah dari satu objek ke objek lainnya.
- Collection : Ini adalah kumpulan objek yang ingin Anda ulangi.
- Pernyataan : Baris kode yang ingin Anda jalankan di setiap loop melalui semua objek dalam koleksi.
- Next : Ini adalah pernyataan akhir dari iterasi perulangan dan memberitahu VBA untuk berpindah ke objek berikutnya dalam koleksi.
Contoh untuk memahami perulangan For Each Next
Untuk memahami perulangan For Each Next, mari tulis kode untuk menyembunyikan semua sheet selain lembar kerja yang aktif. Kode ini akan memeriksa nama setiap lembar kerja dan mencocokkannya dengan nama lembar kerja yang aktif dan menyembunyikannya jika tidak cocok.
Untuk menggunakan perulangan For Each Next, Anda dapat mengikuti langkah-langkah berikut:
- Pertama, Anda perlu mendeklarasikan variabel untuk digunakan sebagai lembar kerja.
- Setelah itu gunakan kata kunci “For Each”, lalu variabel “mySheet” untuk sheetnya, dan gunakan “ActiveWorkbook.Worksheets” untuk kumpulan worksheet buku kerja yang aktif.
- Selanjutnya, Anda perlu menggunakan pernyataan VBA IF untuk menguji apakah nama sheet yang saat ini berada dalam iterasi loop ini TIDAK SAMA dengan lembar kerja yang aktif, dan jika kondisi ini benar, sembunyikan sheet yang sekarang ada di loop pengulangan.
- Pada akhirnya, Anda memiliki kata kunci NEXT dan variabel “mySheet” untuk menyelesaikan kode loop.
Kode terakhir:
Sub Hide_Other_Sheets() Dim mySheet As Worksheet For Each mySheet In ActiveWorkbook.Worksheets If mySheet.Name <> ActiveSheet.Name Then mySheet.Visible = False End If Next mySheet End Sub
Saat Anda menjalankan kode ini , kode ini menelusuri setiap lembar kerja di buku kerja aktif dan mencocokkan namanya dengan lembar kerja aktif, dan jika nama lembar kerja tidak cocok dengan nama lembar kerja aktif, kode ini akan melakukannya. masker.
Dengan cara ini semua lembar kerja akan disembunyikan.