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
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
Alternatif 1
Keuntungan menggunakan With...End With:
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:
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.
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 WithAlternatif 2
With Application With .FileDialog(msoFileDialogFolderPicker) .AllowMultiSelect = False .Filters.Clear .Title = "Membuka Folder" End With End WithKetiga 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:
- 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.
- Dengan menghilangkan penyataan yang berulang, kode menjadi lebih mudah dibaca dan dipahami.
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 WithPada 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
Post a Comment