Mengapa Perlu Mempelajari Do...Loop?
Pada artikel sebelumnya, Anda telah mempelajari perulangan For...Next yang digunakan ketika jumlah pengulangan sudah diketahui, misalnya mengulang proses sebanyak 10 atau 100 kali.
Namun, bagaimana jika Anda tidak mengetahui berapa kali proses harus diulang?
Misalnya:
-
Membaca data hingga menemukan baris kosong.
-
Meminta pengguna mengisi input sampai data yang dimasukkan benar.
-
Menjalankan proses hingga suatu kondisi terpenuhi.
Dalam kondisi seperti ini, Do...Loop merupakan pilihan yang lebih tepat.
Mengenal Do...Loop
Do...Loop adalah struktur perulangan yang akan menjalankan suatu blok kode selama kondisi tertentu bernilai True atau hingga kondisi tertentu menjadi True, tergantung bentuk penulisannya.
Berbeda dengan For...Next yang mengandalkan jumlah iterasi, Do...Loop bergantung pada kondisi.
Dengan kata lain:
For...Next → Mengulang berdasarkan jumlah.
Do...Loop → Mengulang berdasarkan kondisi.
Bentuk Dasar Do...Loop
VBA menyediakan beberapa bentuk penulisan Do...Loop.
1. Do While...Loop
Perulangan dilakukan selama kondisi bernilai True.
Do While kondisi
pernyataan
Loop
2. Do Until...Loop
Perulangan dilakukan selama kondisi masih False.
Do Until kondisi
pernyataan
Loop
3. Do...Loop While
Kondisi diperiksa setelah blok kode dijalankan.
Do
pernyataan
Loop While kondisi
4. Do...Loop Until
Do
pernyataan
Loop Until kondisi
Memahami Perbedaannya
Perhatikan ilustrasi berikut.
Misalkan terdapat variabel:
Nilai = 1
Do While
Do While Nilai <= 5
Nilai = Nilai + 1
Loop
Artinya:
Selama nilai masih kurang dari atau sama dengan 5, perulangan akan terus dilakukan.
Do Until
Do Until Nilai > 5
Nilai = Nilai + 1
Loop
Artinya:
Perulangan akan berhenti ketika nilai sudah lebih besar dari 5.
Walaupun bentuknya berbeda, kedua contoh di atas menghasilkan proses yang sama.
Contoh Sederhana
Menampilkan angka 1 sampai 5.
Sub ContohDo()
Dim i As Integer
i = 1
Do While i <= 5
Debug.Print i
i = i + 1
Loop
End Sub
Output
1
2
3
4
5
Contoh Menggunakan Do Until
Sub ContohDoUntil()
Dim i As Integer
i = 1
Do Until i > 5
Debug.Print i
i = i + 1
Loop
End Sub
Outputnya sama seperti contoh sebelumnya.
Ilustrasi Cara Kerja
Misalkan terdapat kode berikut.
i = 1
Do While i <= 3
MsgBox i
i = i + 1
Loop
Proses yang terjadi adalah:
| Iterasi | Nilai i | Kondisi | Hasil |
|---|---|---|---|
| 1 | 1 | True | Menampilkan 1 |
| 2 | 2 | True | Menampilkan 2 |
| 3 | 3 | True | Menampilkan 3 |
| 4 | 4 | False | Perulangan berhenti |
Kapan Menggunakan Do...Loop?
Gunakan Do...Loop ketika:
-
Jumlah pengulangan belum diketahui.
-
Membaca data sampai menemukan baris kosong.
-
Menunggu pengguna memberikan input yang benar.
-
Melakukan validasi data.
-
Mengolah data hingga kondisi tertentu terpenuhi.
Studi Kasus 1
Membaca Data Sampai Baris Kosong
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
Kode tersebut akan membaca seluruh data pada kolom A mulai baris kedua hingga menemukan sel kosong.
Studi Kasus 2
Memberi Warna Sel yang Berisi Nilai
Sub WarnaiData()
Dim Baris As Long
Baris = 1
Do Until Cells(Baris, 1).Value = ""
Cells(Baris, 1).Interior.Color = vbYellow
Baris = Baris + 1
Loop
End Sub
Program akan terus memberi warna hingga menemukan baris kosong.
Menggunakan Exit Do
Seperti Exit For, VBA juga menyediakan Exit Do.
Sub ExitLoop()
Dim i As Integer
i = 1
Do While i <= 100
If i = 10 Then Exit Do
Debug.Print i
i = i + 1
Loop
End Sub
Perulangan langsung berhenti ketika nilai i mencapai 10.
Perbandingan For...Next dan Do...Loop
| For...Next | Do...Loop |
|---|---|
| Jumlah perulangan sudah diketahui | Jumlah perulangan belum diketahui |
| Menggunakan variabel penghitung | Menggunakan kondisi |
| Cocok untuk iterasi tetap | Cocok untuk validasi dan pembacaan data |
| Sintaks lebih sederhana | Lebih fleksibel |
Tips Pemrograman
✔ Gunakan For...Next jika jumlah pengulangan sudah diketahui.
✔ Gunakan Do...Loop jika perulangan bergantung pada kondisi.
✔ Pastikan kondisi perulangan dapat berubah agar tidak terjadi infinite loop.
✔ Gunakan tipe data Long saat bekerja dengan nomor baris pada Excel.
Kesalahan yang Sering Terjadi
1. Lupa Mengubah Nilai Variabel
Do While i <= 10
Debug.Print i
Loop
Kode di atas akan menyebabkan infinite loop, karena nilai i tidak pernah berubah.
Perbaikannya:
Do While i <= 10
Debug.Print i
i = i + 1
Loop
2. Kondisi Salah
Do While i > 10
Padahal nilai awal i adalah 1.
Akibatnya, perulangan tidak pernah dijalankan.
3. Lupa Loop
Do While i <= 5
Debug.Print i
Kode tersebut akan menghasilkan kesalahan sintaks karena blok perulangan belum ditutup.
Ringkasan
Hal-hal penting yang perlu diingat:
-
Do...Loopadalah perulangan berbasis kondisi. -
Terdapat empat bentuk utama
Do...Loop. -
Do Whilemengulang selama kondisi benar. -
Do Untilmengulang sampai kondisi menjadi benar. -
Exit Dodigunakan untuk menghentikan perulangan sebelum selesai. -
Selalu pastikan kondisi dapat berubah agar tidak terjadi infinite loop.
Latihan Mandiri
Latihan 1
Buat program yang menampilkan angka 1 sampai 20 menggunakan Do While.
Latihan 2
Buat program yang memberi warna hijau pada seluruh sel di kolom A hingga menemukan sel kosong.
Latihan 3
Buat program yang menghitung jumlah data pada kolom B hingga menemukan baris kosong, kemudian tampilkan hasilnya menggunakan MsgBox.
Kesimpulan
Perulangan Do...Loop sangat berguna ketika jumlah pengulangan belum dapat ditentukan sejak awal. Dengan memanfaatkan kondisi sebagai pengendali perulangan, Anda dapat membuat program yang lebih fleksibel untuk membaca data, melakukan validasi, maupun mengotomatisasi berbagai proses di Excel.
Setelah menguasai For...Next dan Do...Loop, Anda telah memahami dua jenis perulangan utama dalam VBA Excel yang akan menjadi dasar dalam membangun aplikasi yang lebih kompleks.
