Skip to main content

Teknik Proses Pencabangan Pada Pemrograman VBA

Seringkali, sebuah kode program menjalankan beberapa tugas yang berbeda berdasarkan beberapa nilai. Jika kondisi bernilai benar, maka kode itu menjalankan satu tugas. Jika kondisi bernilai salah, maka kode program itu menjalankan tugas yang berbeda. Kemampuan sebuah aplikasi untuk memperoleh nilai, dan berdasarkan nilai itu, memutuskan kode manakah yang akan dijalankan disebut dengan proses pencabangan atau pemrosesan secara kondisional.

Gambaran sederhananya seperti ini. Saat berjalan keluar dari rumah, mungkin kita belum memutuskan hendak pergi ke mana. Di tengah perjalanan, kita berhenti di sebuah bertigaan, belok ke kiri berarti ke taman, sedangkan belok ke kanan berarti ke kolam renang. Bila ingin ke kolam renang, berati kita belok ke kanan, sedangkan bila ingin ke taman, berarti kita belok ke kiri. Dengan cara seperti ini, sebuah program melihat nilai dari beberapa variabel dan memutuskan kode manakah yang akan diproses.

VBA pada Access mempunyai dua pernyataan yang digunakan utuk memproses secara kondisional:
■ If...Then...Else...End If
■ Select Case...End Select

Keyword If

Dalam sebuah program, keyword If dapat digunakan dalam beberapa cara yang berbeda. Semua cara itu digunakan untuk memeriksa sebuah kondisi, dan, berdasarkan hasil evaluasi, program menjalankan sebuah tugas. Pemeriksaan kondisi akan menghasilkan nilai dengan tipe data Boolean, yaitu benar atau salah. Bila kondisi bernilai benar, maka program akan menjalankan baris perintah setelah pernyataan If. Bila kondisi bernilai salah, maka program akan meloncat ke pernyataan setelah Else, jika ada, atau End If jika tidak ada pernyataan Else.

Sebuah pernyataan If dapat dituliskan dengan beberapa bentuk:

Bentuk Penulisan If...Then


Bentuk penulisan If...Then hanya terdiri dari satu baris pernyataan saja di mana kondisi dan tugas atau aksi yang bernilai benar berada dalam baris yang sama. Contohnya seperti ini:
If intTerbilang=1 Then strTerbilang="Satu"

If strPropinsi="Jawa Tengah" Then strIbuKota="Semarang"
Pada pernyataan di atas, VBA mengevaluasi strPropinsi="Jawa Tengah" terlebih dahulu dan memastikan bila hasil evaluasi ini benar atau salah. Bila benar (artinya strPrpopinsi bernilai Jawa Tengah) maka pernyataan setelah Then dieksekusi. Pada contoh di atas, variabel strIbuKota diberi nilai Semarang. Bila hasil evaluasi bernilai salah, maka program akan menjalankan perintah di baris berikutnya.

Bentuk Penulisan If...Then...Else

Bentuk penulisan If...Then...Else... hanya terdiri dari satu baris pernyataan saja di mana kondisi dan tugas atau aksi yang benar maupun yang salah berada dalam baris yang sama.
If strPropinsi="Jawa Tengah" Then strIbuKota="Semarang" Else strIbuKota="Bukan Semarang"
Pada contoh ini, bila hasil evaluasi strPropinsi bernilai benar ("Jawa Tengah") maka pernyataan setelah Then dieksekusi, yaitu variabel strIbuKota bernilai "Semarang". Bila hasil evaluasi strPropinsi bernilai lain (bukan "Jawa Tengah") maka pernyataan setelah Else dieksekusi, yaitu variabel strIbuKota bernilai "Bukan Semarang".

Bentuk Penulisan If...End If

Bentuk penulisan If...End If berisi satu atau lebih baris perintah di dalam blok yang dimulai dengan If dan diakhiri dengan End If. Contoh di atas bisa juga dituliskan dengan menggunakan blok seperti berikut ini:
If strPropinsi="Jawa Tengah" Then
  strIbuKota="Semarang"
End If
Cara mengartikannya sama persis dengan contoh If...Then di atas. Jika pernyataan kondisional If bernilai benar, maka satu pernyataan tunggal dalam blok If...Then...End If dieksekusi. Jika salah, maka program akan langsung mengakhiri ke End If dan melanjutkan program yang ada di bawahnya.

Dengan penulisan If...Then...End If seperti ini, kita bisa menjalankan dua atau lebih baris perintah, saat sebuah pernyataan kondisional If bernilai benar. Misalnya seperti ini:
If strPropinsi="Jawa Tengah" Then
  strIbuKota="Semarang"
  strNamaPelabuhan="Tanjung Emas"
End If
Artinya: Jika strPrpopinsi bernilai Jawa Tengah, maka pernyataan setelah Then dan berada di dalam blok If...End If dieksekusi. Jadi ada dua baris pernyataan di dalam blok If...Then...End If, yaitu strIbuKota="Semarang" dan strNamaPelabuhan="Tanjung Emas" yang dieksekusi.

Bentuk Penulisan If...Then...Else...End If

Pada contoh sebelumnya, satu atau lebih pernyataan dieksekusi bila jika pernyataan kondisional If bernilai benar dan tidak ada eksekusi lain saat pernyataan kondisi If bernilai salah. Untuk bentuk penulisan If...Then...Else...End If, keyword Else digunakan bila pernyataan kondisional If bernilai salah.
If strPropinsi="Jawa Tengah" Then
  strIbuKota="Semarang"
  strNamaPelabuhan="Tanjung Emas"
Else
  strIbuKota="Bukan Semarang"
  strNamaPelabuhan="Bukan Tanjung Emas"
End If
Bila pernyataan kondisional strPropinsi bernilai "Jawa Tengah" (benar), maka program akan menjalankan pernyataan strIbuKota="Semarang" dan strPelabuhan="Tanjung Emas". Bila strPropinsi bernilai lain (bukan "Jawa Tengah" ), maka program akan menjalankan pernyataan setelah Else yaitu strIbuKota="Bukan Semarang" dan strPelabuhan="Bukan Tanjung Emas".

Bentuk penulisan If...Then...ElseIf...Then...End If

Jika menginginkan ada banyak kondisi If, kita dapat mengganti pernyataan Else dengan ElseIf. Pernyataan ElseIf pada If...Then...ElseIf...Then...End If digunakan untuk menyatakan segala kondisi yang mungkin diperlukan.
If strPropinsi="Jawa Tengah" Then
  strIbuKota="Semarang"
  strNamaPelabuhan="Tanjung Emas"
ElseIf strPropinsi="Jawa Timur" Then
  strIbuKota="Surabaya"
  strNamaPelabuhan="Tanjung Perak"
Else
  strIbuKota="Ibu Kota Lainnya"
  strNamaPelabuhan="Pelabuhan Lainnya"
End If
Artinya: Jika kondisi pertama - yaitu strPropinsi bernilai "Jawa Tengah" - bernilai benar, maka pernyataan yang memenuhi syarat kondisi pertama akan dijalankan. Bila kondisi pertama tidak benar, maka kondisi kedua dievaluasi. Jika kondisi kedua - yaitu strPropinsi bernilai "Jawa Timur" - bernilai benar, maka pernyataan yang memenuhi syarat kondisi kedua akan dijalankan.

Jika kondisi pertama dan kondisi kedua tidak benar, maka pernyataan setelah Else dieksekusi. Jika kondisi pertama dan kondisi kedua tidak benar dan Else tidak digunakan, maka tidak ada pernyataan yang benar dan langsung diakhiri dengan pernyatan End If.

Bentuk If berkalang (Nested If)

If berkalang atau dalam bahasa Inggrisnya nested If adalah pernyataan If dalam If. Jadi dalam pernyataan If...Then...End If terdapat pernyataan If...Then yang lainnya. Berikut ini adalah contohnya.
If strPulau="Jawa" Then
  If strPropinsi="Jawa Tengah" Then
    strIbuKota="Semarang"
    strNamaPelabuhan="Tanjung Emas"
  ElseIf strPropinsi="Jawa Timur" Then
    strIbuKota="Surabaya"
    strNamaPelabuhan="Tanjung Perak"
  Else
    strIbuKota="Ibu Kota Lainnya"
    strNamaPelabuhan="Pelabuhan Lainnya"
  End If
End If
Pernyataan If di posisi paling luar adalah If strPulau="Jawa" Then. Setelah itu diikuti oleh pernyataan If...Then...ElseIf...End If yang berada di dalamnya. Bila evaluasi kondisi strPulau="Jawa" bernilai benar, maka If...Then...ElseIf...End If dieksekusi. Untuk memudahkan pemrogram membaca pernyataan If...Then, pemakaian indentasi diperlukan. Indentasi digunakan untuk menuliskan pernyataan agak menjorok ke dalam, sehingga posisi tepat kapan If dimulai dan End If yang terkait diakhiri menjadi mudah dipahami.

Nilai dan Kondisi If pada tipe data Boolean

Ada situasi di mana pernyataan If...Then tidak tepat dalam penerapannya. Hal ini terjadi bila variabel yang ingin diuji mempunyai tipe data Boolean. Misalnya, untuk memeriksa apakah seorang karyawan masih bekerja atau sudah keluar, seperti ini:
If blMasihKerja = True Then
  blStatusLogin = True
Else
  blStatusLogin = False
End If
Tidak ada yang salah dalam penggunaan pernyataan If blMasihKerja = True Then di atas, hanya kurang tepat. Pernyataan If digunakan bila satu kondisi dinyatakan benar atau salah. Nah, dalam hal blMasihKerja = True, blMasihKerja itu sendiri merupakan kondisi yang sudah bernilai benar (True). Dengan demikian kondisi blMasihKerja=True tidak perlu dituliskan. Kita dapat menyederhanakan kode di atas menjadi:
If blMasihKerja Then
  blStatusLogin = True
Else
  blStatusLogin = False
End If

Penggunaan keyword Not pada If...Then

Kita bisa menggunakan keyword Not pada pernyataan If...Then bila kondisi memang tidak sesuai dengan yang diinginkan. Misalnya, jika karyawan sudah tidak bekerja lagi, maka status login bernilai salah (False). Dengan demikian pernyataan If...Then di atas dapat disusun seperti ini:
If Not blMasihKerja Then
  blStatusLogin = False
Else
  blStatusLogin = True
End If
Not blMasihKerja juga bisa diartikan: Benar bahwa si karyawan sudah tidak bekerja lagi, sehingga status loginnya (blStatusLogin) bernilai salah.

Menggunakan banyak kondisi dengn SELECT CASE

Bila ada banyak kondisi yang ingin diuji, penggunaan If...Then menjadi tidak efektif dan terlihat membingunkan. Untuk itu, VBA juga menyediakan pernyataan Select Case...End Select yang dapat menggantikan If...Then. Sintaks penulisan Select Case...End Select adalah sebagai berikut:
Select Case Ekspresi
  Case Nilai1
    Baris yang harus dijalankan bila Ekspresi = Nilai1
  Case Nilai2
    Baris yang harus dijalankan bila Ekspresi = Nilai2
  Case dst
    dst
  Case Else
    Baris yang harus dijalankan bila Ekspresi tidak mempunyai nilai yang sesuai dengan nilai-nilai di atas.
    Baris ini bisa juga dianggap sebagai nilai default.
End Select
Pada dasarnya, pengertian Select Case sama dengan If...Then. Namun demikian, Select Case lebih cocok digunakan bila ada banyak kondisi yang ingin diuji. Pada Select Case, kondisi yang ingin diuji dinyatakan dengan sebuah Ekspresi. Kemudian, dengan menggunakan Case, kita menguji nilai Ekspresi yang mungkin terjadi. Bila ada nilai yang sesuai pada Case, program menjalankan kode yang ada pada Case ini. Contohnya pada kode VBA berikut ini:
Select Case intTipeField
'Numeric
    Case 3: TipeField = "Integer"
    Case 4: TipeField ="Long Integer"
'Text
    Case 10: TipeField = "Text"
'Date and Time
    Case 8 
      TipeField = "Date"
    Case 22
      TipeField = "Time"
'Boolean
    Case 1: TipeField = "Yes/No"
'Others
    Case Else: TipeField = "Belum didefinisikan"
  End Select
Pada contoh diatas, kita ingin menguji tipe field yang dinyatakan dengan Ekspresi intTipeField.
Bila intTipeField=3, dinyatakan dengan Case 3, maka TipeField="Integer"
Bila intTipeField=4, dinyatakan dengan Case 4, maka TipeField="Long Integer"
dst
Bila tidak ada nilai intTipeField yang sesuai dengan setiap nilai Case, maka kita menggunakan Case Else, dalam contoh di atas, TipeField = "Belum didefinisikan".
Pernyataan Case Else bersifat opsional dan selalu ditaruh di bagian akhir dari Case. Bila tidak ada Case Else, maka program akan berlanjut ke End Select.

Penggunaan Is pada Case

Is pada Case digunakan bila Ekspressi tidak sama, misalnya bila Ekspressi lebih besar atau lebih kecil dari nilai Case. Contohnya seperti ini:
Select Case dbTaxRate
  Case Is < 0.05
    MsgBox "Tarif Pajak Max 5%"
  Case Is < 0.1 MsgBox "Tarif Pajak 5% dan 10%" Case Is > 0.2
    MsgBox "Tarif Pajak lebih dari 20%"
  Case Else
     MsgBox "Tarif lainnya"
End Select
Pada contoh di atas, Ekspresi dbTaxRate diuji. Bila nilai dbTaxRate kurang dari 5% (0.05), maka pesan Tarif Pajak Max 5% ditampilkan, bila tidak ada yang sesuai dengan nilai Case Is, maka pesan "Tarif lainnya" ditampilkan.

Menggunakan Banyak Nilai pada Case

Nilai pada Case bisa kita nyatakan dengan beberapa cara:
Case Is <= 99
 dbKomisi = 1 
Case 100 To 115, 116 To 199
 dbKomisi = 3 
Case 200 To 499
 dbKomisi = 15 
Case Is >= 500
 dbKomisi = 18
Pada contoh di atas, ada banyak variasi penggunaan nilai Case, yaitu bila nilai Case lebih kecil atau sama dengan 99, nilai Case terletak di antara 100 s/d 115, 116 s/d 199, dan seterusnya. Intinya, bila ada banyak sekali kondisi yang ingin diuji, penggunaan SELECT CASE jauh lebih efektif dari pada penggunaan If...Then.

Comments

Posting Terpopuler

Normalisasi, Denormalisasi, dan Anomali Database

Membuat Relasi Database

Menampilkan Data MySQL dalam Form di Access