Skip to main content

Pernyataan With...End With di Access VBA

Pernyataan With..End With digunakan untuk mengulang objek tunggal secara struktural sehingga penulisan program menjadi terlihat sederhana dan mudah dipahami. Selain itu mata juga terasa nyaman karena tidak melihat kode VBA yang panjang dan memusingkan.
Secara struktural, penyataan With..End With harus dituliskan menjorok ke dalam (indent) sebanyak beberapa karakter. Tujuannya, memudahkan pemahaman bahwa pernyataa di dalam With..End With merupakan bagian dari objek yang menjadi rujukan pada With..End With. Sintaks penulisannya adalah sebagai berikut
With objek1  
  [pernyataan objek1]  
  With objek2  'objek2 merupakan bagian dari objek1
    [pernyataan objek2]  
    With objek3  'objek3 merupakan bagian dari objek2
      [pernyataan objek3]
      dan seterusnya
    End With
  End With
End With

objek1, objek2, objek3 adalah ekspresi yang digunakan untuk mengevaluasi objek. Ekspresi bisa bermacam-macam, mulai dari yang paling sederhana sampai yang kompleks sekalipun. Secara struktural, objek1 mempunyai anggota yang bernama objek2. Setelah itu, objek2 mempunyai anggota yang bernama objek3, dan seterusnya.

Program yang dibuka dengan pernyataan With harus selalu diakhiri dengan End With. Pada sintaks di atas, End With yang paling menjorok ke dalam digunakan untuk mengakhiri With pada objek3, sedangkan End With paling luar digunakan untuk mengakhiri With pada objek1.

Dengan menggunakan With...End With, kita bisa menuliskan serangkaian pernyataan yang berisi objek tertentu tanpa mengulang objek ini berkali-kali. Dalam blok With, kita dapat menuliskan anggota dari objek tertentu dengan menggunakan tanda titik di awal.

Sebagai contoh, untuk menuliskan properti yang merupakan bagian dari sebuah objek, kita hanya perlu menggunakan With nama objek. Setelah itu, dalam With...End With, kita dapat menuliskan properti itu dengan menggunakan tanda titik. Berikut ini adalah penggunaan With...End With.
Metode semula
Application.FileDialog(msoFileDialogFolderPicker).AllowMultiSelect = False
Application.FileDialog(msoFileDialogFolderPicker).Filters.Clear
Application.FileDialog(msoFileDialogFolderPicker).Title = "Membuka Folder"
Metode semula di atas di perbaiki dengan metode berikut ini:
Alternatif 1
With Application.FileDialog(msoFileDialogFolderPicker)
  .AllowMultiSelect = False
  .Filters.Clear
  .Title = "Membuka Folder"
End With
Alternatif 2
With Application
   With .FileDialog(msoFileDialogFolderPicker)
     .AllowMultiSelect = False
     .Filters.Clear
     .Title = "Membuka Folder"
   End With
End With
Ketiga metode pada contoh di atas memberikan perintah yang sama kepada VBA Access untuk mengatur properti. Perbedaannya, metode semula terlihat lebih memusingkan, karena panjang dan tidak mudah dipahami. Sebaliknya, metode alternatif 2 adalah metode yang paling mudah dipahami, karena terlihat sederhana dan tidak rumit.

Keuntungan menggunakan With...End With:
  1. Kita tidak perlu menjalankan kode VBA yang rumit secara berulang kali, seperti contoh metode semula di atas, di mana pernyataan Application.FileDialog (msoFileDialogFolderPicker) diulang tiga kali.
  2. Dengan menghilangkan penyataan yang berulang, kode menjadi lebih mudah dibaca dan dipahami.
Dalam sebuah blok With...End With, kita hanya diperbolehkan untuk menentukan metode atau properti yang menjadi bagian dari objek With. Pada contoh di atas, blok Application akan menampilkan metode atau properti yang berkaitan dengan Application saja. Selanjutnya, pada blok FileDialog, kita hanya bisa menentukan metode atau properti yang berkaitan dengan FileDialog saja. Demikian dan seterusnya.

Bila ingin menggunakan metode atau properti yang berada di luar blok With...End With, maka kita harus mendeklarasikan terlebih dahulu dalam sebuah variabel yang berisi metode atau properti di luar blok With...End With. Misalnya seperti ini:
  With Form_frmCetak    
    intNomorUkuranKertas = .cbbUkuranKertas.Column(0)
    intCopies = .txtSalinan
    intOrientation = .fraOrientasi
    boolDataOnly = .cbxCetakDatanyaSaja
  End With

  Set prtApp = Application.Printers(2))
    
  With prtApp
    .PaperSize = intNomorUkuranKertas
    .Copies = intCopies
    .Orientation = intOrientation
    .DataOnly = boolDataOnly
  End With
Pada contoh di atas kita mendeklarasikan terlebih dulu nilai dari varibel intNomorUkuranKertas, intCopies, intOrientation, dan boolDataOnly dalam blok dari With Form_frmCetak. Form_frmCetak adalah nama objek form. Nilai dari masing-masing variabel ini akan digunakan untuk menentukan nilai properti printer (dengan nama prtApp).

Seperti terlihat di contoh, blok With Form_frmCetak dan blok With prtApp terpisah satu dengan yang lainnya. Tetapi kita ingin menggunakan nilai dari blok With Form_frmCetak untuk menentukan nilai properti yang ada di blok prtApp.

Pada blok With prtApp, kita ingin menggunakan nilai yang ada di Form_frmCetak untuk menentukan properti properti prtApp. Untuk mengatur properti printer pada blok With prtApp sesuai dengan nilai yang ada di form frmCetak, kita memasukkan kembali variabel dari blok With Form_frmCetak yang sudah diberik nilai, yaitu pada intNomorUkuranKertas, intCopies, intOrientation, dan boolDataOnly.

Comments

Posting Terpopuler

Normalisasi, Denormalisasi, dan Anomali Database

Membuat Fungsi Untuk Menghitung Pajak Penghasilan PPh 21 di MS Access

Format Untuk Field Dengan Tipe Data Number dan Currency di MS Access