Apa Itu Do...Loop?
Do...Loop adalah struktur perulangan yang akan terus menjalankan blok kode selama suatu kondisi bernilai True atau sampai kondisi tertentu terpenuhi.
Berbeda dengan For...Next, Anda tidak perlu menentukan berapa kali proses akan diulang.
Bentuk Dasar Do...Loop
VBA menyediakan beberapa variasi Do...Loop.
Bentuk pertama:
Do While kondisi
'Kode
Loop
Pada bentuk ini, kondisi diperiksa sebelum blok kode dijalankan.
Jika kondisi bernilai False, perulangan tidak akan dijalankan sama sekali.
Do Until
Selain Do While, terdapat juga Do Until.
Do Until kondisi
'Kode
Loop
Perulangan akan terus berjalan selama kondisi masih False dan berhenti ketika kondisi menjadi True.
Memahami Perbedaan While dan Until
Misalkan nilai awal variabel adalah:
i = 1
Menggunakan Do While:
Do While i <= 5
Debug.Print i
i = i + 1
Loop
Output:
1
2
3
4
5
Sedangkan dengan Do Until:
Do Until i > 5
Debug.Print i
i = i + 1
Loop
Hasilnya sama, hanya cara penulisan kondisinya yang berbeda.
Loop dengan Kondisi di Akhir
Kondisi juga dapat diperiksa setelah blok kode dijalankan.
Do
'Kode
Loop While kondisi
atau
Do
'Kode
Loop Until kondisi
Pada bentuk ini, isi perulangan pasti dijalankan minimal satu kali, kemudian barulah kondisi diperiksa.
Contoh 1 — Membaca Data Sampai Baris Kosong
Misalkan kolom A berisi daftar nama dengan jumlah yang tidak tetap.
Sub BacaData()
Dim Baris As Long
Baris = 2
Do While Cells(Baris, 1).Value <> ""
Debug.Print Cells(Baris, 1).Value
Baris = Baris + 1
Loop
End Sub
Perulangan akan berhenti ketika menemukan sel kosong.
Contoh 2 — Menjumlahkan Angka
Sub Hitung()
Dim i As Integer
Dim Total As Long
i = 1
Do While i <= 10
Total = Total + i
i = i + 1
Loop
MsgBox Total
End Sub
Contoh 3 — Menggunakan Do Until
Sub ContohUntil()
Dim Angka As Integer
Angka = 1
Do Until Angka = 11
Debug.Print Angka
Angka = Angka + 1
Loop
End Sub
Studi Kasus
Misalkan Anda ingin mencari baris terakhir yang masih memiliki data.
Dim Baris As Long
Baris = 2
Do While Cells(Baris, 1).Value <> ""
Baris = Baris + 1
Loop
MsgBox "Baris terakhir berisi data : " & Baris - 1
Karena jumlah data tidak diketahui sebelumnya, Do...Loop menjadi solusi yang sederhana.
Do...Loop vs For...Next
| Do...Loop | For...Next |
|---|---|
| Berdasarkan kondisi | Berdasarkan jumlah iterasi |
| Cocok jika jumlah perulangan belum diketahui | Cocok jika jumlah perulangan sudah diketahui |
| Lebih fleksibel | Lebih sederhana untuk perulangan tetap |
| Berpotensi menjadi perulangan tak berujung jika kondisi tidak berubah | Berhenti sesuai nilai akhir yang ditentukan |
Kesalahan yang Sering Terjadi
Lupa Mengubah Nilai Kondisi
Perhatikan contoh berikut.
Dim i As Integer
i = 1
Do While i <= 10
Debug.Print i
Loop
Kode tersebut akan menghasilkan perulangan tanpa akhir karena nilai i tidak pernah berubah.
Seharusnya:
i = i + 1
ditambahkan di dalam blok perulangan.
Salah Memilih While atau Until
Pilih bentuk yang paling mudah dipahami.
Jika logika program berbunyi:
"Selama masih ada data..."
gunakan Do While.
Jika berbunyi:
"Berhenti ketika menemukan..."
gunakan Do Until.
Menggunakan Do...Loop untuk Jumlah Iterasi Tetap
Jika jumlah pengulangan sudah diketahui, For...Next biasanya lebih ringkas dan lebih mudah dibaca.
Tips Praktis
💡 Gunakan Do While ketika kondisi untuk melanjutkan proses lebih mudah dituliskan.
💡 Gunakan Do Until ketika lebih mudah menentukan kondisi berhentinya.
💡 Pastikan kondisi di dalam perulangan selalu berubah agar tidak terjadi infinite loop.
💡 Gunakan Do...Loop untuk membaca data yang jumlahnya berubah-ubah.
💡 Pilih For...Next jika jumlah iterasi sudah diketahui sejak awal.
Ringkasan
| Struktur | Kegunaan |
|---|---|
Do While |
Mengulang selama kondisi bernilai True |
Do Until |
Mengulang hingga kondisi bernilai True |
Loop While |
Memeriksa kondisi setelah blok dijalankan |
Loop Until |
Memeriksa kondisi berhenti setelah blok dijalankan |
Kesimpulan
Do...Loop merupakan struktur perulangan yang sangat berguna ketika jumlah iterasi tidak dapat ditentukan sejak awal. Dengan memanfaatkan kondisi sebagai pengendali perulangan, Anda dapat membuat makro yang lebih fleksibel untuk membaca data, melakukan pencarian, maupun menjalankan proses hingga syarat tertentu terpenuhi. Kunci penggunaan Do...Loop adalah memastikan kondisi selalu diperbarui agar perulangan dapat berhenti pada waktu yang tepat.
