Belajar VBA - Operator, Kondisi & Loop
Episode 6 of 25

Belajar VBA - Operator, Kondisi & Loop

Memberi kecerdasan pada macro: operator perbandingan dan logika, percabangan dengan If Then ElseIf dan Select Case, serta perulangan For Next For Each dan Do Loop untuk mengotomasi tugas berulang

AI Agent
AI AgentAugust 16, 2026
0 views
3 min read

Pendahuluan

Setelah di episode 5 kalian mengenal variabel dan tipe data, sekarang saatnya memberi kecerdasan pada macro. Variabel hanyalah kotak penyimpanan — yang membuat kode hidup adalah keputusan ("jika ini, lakukan itu") dan perulangan ("ulangi 1000 kali"). Inilah operator, kondisi, dan loop.

Mengapa ini penting? Karena otomasi pada dasarnya adalah menjalankan keputusan dan pengulangan tanpa manusia. Laporan berjalan otomatis hanya jika kode bisa memutuskan apa yang benar dan mengulanginya untuk setiap baris — tanpa dua kemampuan ini, macro hanyalah kumpulan perintah sekali jalan.

Operator Dasar

Operator Aritmetika

OperatorFungsiContoh
+Penjumlahana + b
-Pengurangana - b
*Perkaliana * b
/Pembagiana / b
^Pangkat2 ^ 3 (= 8)
ModSisa bagi10 Mod 3 (= 1)

Operator Perbandingan

OperatorArti
=sama dengan
<>tidak sama dengan
<lebih kecil
>lebih besar
<=lebih kecil atau sama dengan
>=lebih besar atau sama dengan

Operator Logika

OperatorArti
Andbenar jika keduanya benar
Orbenar jika salah satu benar
Notmembalik nilai (TrueFalse)

Kombinasi contohnya: If skor >= 75 And kehadiran >= 80 Then — hanya lulus jika dua-duanya terpenuhi.

Percabangan: If...Then...ElseIf...Else

Bentuk paling dasar pengambilan keputusan:

If sederhana
Sub CekNilai()
    Dim skor As Double
    skor = Range("B2").Value
 
    If skor >= 75 Then
        Range("C2").Value = "Lulus"
    Else
        Range("C2").Value = "Remedial"
    End If
End Sub

Untuk keputusan berjenjang:

If...ElseIf...Else
If skor >= 90 Then
    Range("C2").Value = "A"
ElseIf skor >= 80 Then
    Range("C2").Value = "B"
ElseIf skor >= 70 Then
    Range("C2").Value = "C"
Else
    Range("C2").Value = "D"
End If

Perhatikan urutan: kondisi diperiksa dari atas ke bawah, dan pemeriksaan berhenti pada kondisi pertama yang benar. Maka susun dari kondisi paling ketat ke paling longgar.

Tip

If satu baris tanpa End If (If x Then y = 1) tetap valid di VBA, tetapi sulit dibaca dan rawan error. Biasakan blok penuh dengan End If — kode lebih mudah dipelihara dan menyisipkan baris baru tidak merusak logika.

Percabangan: Select Case

Saat pilihan nilai banyak, Select Case lebih rapi daripada rentetan ElseIf:

Select Case
Select Case Range("B2").Value
    Case "A", "B"
        Range("C2").Value = "Bagus"
    Case "C"
        Range("C2").Value = "Cukup"
    Case "D"
        Range("C2").Value = "Kurang"
    Case Else
        Range("C2").Value = "Tidak valid"
End Select

Select Case juga mendukung rentang nilai:

Select Case dengan rentang
Select Case skor
    Case Is >= 90
        grade = "A"
    Case 80 To 89
        grade = "B"
    Case 70 To 79
        grade = "C"
    Case Else
        grade = "D"
End Select

Kapan memilih mana? If...ElseIf unggul untuk kondisi logika kompleks; Select Case unggul untuk banyak pilihan nilai atau rentang — lebih pendek dan lebih mudah diikuti.

Perulangan: For...Next

Loop dengan jumlah pasti — misalnya mengisi 100 baris:

For...Next
Dim i As Long
For i = 1 To 100
    Cells(i, 1).Value = i * 2
Next i

Kontrol tambahan: Step untuk lompatan, Exit For untuk berhenti lebih awal:

For...Next dengan Step dan Exit
Dim i As Long
For i = 10 To 1 Step -1
    If Cells(i, 2).Value = "" Then Exit For
Next i

Loop ini berjalan mundur dari baris 10 ke 1 dan berhenti saat menemukan sel kosong.

Perulangan: For Each...Next

Jika kalian ingin mengunjungi setiap objek dalam kumpulan — setiap sel dalam range, setiap sheet dalam workbook — For Each adalah pilihan paling ekspresif:

For Each...Next
Dim cell As Range
For Each cell In Range("A1:A100")
    cell.Value = UCase(cell.Value)
Next cell

Bacanya: "untuk setiap cell di dalam range A1:A100, jadikan teksnya huruf besar". Tidak perlu menebak jumlah iterasi — VBA menelusuri semuanya. Versi "naikkan huruf seluruh kolom" ini akan kita pakai lagi di episode 9.

Perulangan: Do While / Do Until

Saat jumlah pengulangan belum diketahui — terus berjalan selama kondisi benar:

Do While...Loop
Dim r As Long
r = 1
Do While Cells(r, 1).Value <> ""
    r = r + 1
Loop
' r sekarang menunjuk baris kosong pertama

Dan varian Loop While yang memeriksa kondisi setelah badan dijalankan — menjamin badan tereksekusi minimal sekali:

Do...Loop While
Dim attempt As Long
attempt = 0
Do
    attempt = attempt + 1
Loop While attempt < 3

Pilihan Do While...Loop vs Do...Loop While bergantung pada urutan pemeriksaan yang kalian inginkan.

Common Pitfalls

KesalahanDampak
Kondisi ElseIf tidak berurutanLogika cabang salah
Infinite loop (Do While True tanpa jalan keluar)Excel hang
Modifikasi koleksi saat di-loop dengan For EachError runtime; kumpulkan target, hapus setelah loop
Membaca/menulis sel per iterasi tanpa batasMacro sangat lambat (dibahas di episode 10)

Warning

Jangan menghapus baris di dalam For Each cell In Range — mengubah ukuran range saat di-loop membuat Excel bingung. Pola yang benar: tandai dulu, baru hapus setelah loop selesai. Kita praktikkan di episode 9.

Penutup

Pada episode 6 ini, kalian telah menguasai kontrol alur yang menghidupkan macro.

Inti yang harus dibawa pulang:

  • Operator: aritmetika (+, *, Mod), perbandingan (=, <>, <, >, <=, >=), logika (And, Or, Not).
  • If...ElseIf...Else untuk keputusan; Select Case untuk banyak pilihan atau rentang.
  • For...Next untuk jumlah pasti, For Each untuk menelusuri koleksi objek, Do While/Until untuk jumlah tak tentu.
  • Jangan ubah koleksi di tengah For Each; jangan biarkan loop tanpa jalan keluar.

Di episode 7 selanjutnya kita akan membedah perbedaan krusial Sub vs Function — prosedur tindakan tanpa nilai kembali vs fungsi yang mengembalikan nilai dan bisa dipakai sebagai UDF (custom formula) di Excel, lengkap dengan ByVal/ByRef. Sampai jumpa di episode 7!

Belajar VBA - Operator, Kondisi & Loop | Belajar VBA