Mencoba Memahami Class, Object, Property, Method dan Event pada VBA Excel
serial siti kurang kerjaan, menjelaskan hal yg sudah jelaz, mambahas hal yg tidak ferlu.
Kelas: basic / Jurusan: VBA Excel
Dalam serial “VBA Excel at a Glance”, secara ringkas kelima “elemen” tsb sudah disinggung. Sekarang kita akan “menukik” lebih rendah, mencoba memahami pengertiannya. Agar lebih “merakyat” (terutama agar lebih gampang mendongengkannya), kita akan menganalogikan dengan keadaan di dunia nyata di sekitar kita.
CLASS DAN OBJECT
Di dunia ini terdapat banyak class, misalnya: class Manusia, class Lahan, class Bangunan, class PeralatanRumahTangga, class Kendaraan, classPerusahaan, Class Peraturan dan tentu masih banyak lagi. Dengan menyebut “Manusia” saja, kita baru mendapat beberapa definisi yg masih bersifat umum mengenai Manusia, misalnya: terdiri dari badan, kepala, tangan dan kaki. Di kepalanya bisa ada rambut, mata, telinga, hidung, mulut dst. Class KendaraanDarat juga demikian. Yang ada barulah gambaran umumnya, misal: ada bodynya, rodanya, bisa ada tenagaPenggeraknya, dsb.
Dengan CLASS kita belum mendapat informasi spesifik yang jelas, yang lebih lanjut, misal: siapa NAMA manusia itu, cantik atau ganteng, gendut ataulangsing ? Berapa jumlah roda Kendaraan itu, warna catnya apa, bisa belok apa ndak ? dst. Hal-hal yang spesifik itu baru akan ada pada sebuahObject.
SeseorangTertentu adalah sebuah Object dari class Manusia. Lalu, KendaraanJenis&MerkTertentu adalah Object dari class Kendaraan, RumahKuadalah object dari class Bangunan, KipasAngin adalah object dari class PeralatanRumahTangga, UndangUndangNo11/2006 adalah sebuah object dari classPeraturan, demikian seterusnya. Sampai di sini barangkali kita sudah mulai memahami perbedaan pengertian Class dan Object.
Di VBA situasinya ndak jauh berbeda dengan gambaran tersebut. Class Workbook belum menunjuk ke suatu Workbook tertentu, begitu pula dengan class-class lain. Tetapi bila dikatakan: Book1, Book2, mereka adalah Object yg termasuk dalam class Workbook, sebuah worksheet bernama “Jan2007” Worksheets(“Jan2007”)adalah object dari class Worksheet, tombol-tombol bernama CommandButton1, CommandButton2 adalah object-object dari class CommandButton, dst.
Dalam VBA semua class sudah terdaftar JenisCiri / JenisKarakteristik-nya, namun tiap-tiap Ciri, Atribut dan Karalteristik-nya belum memiliki NILAI tertentu.
Sebelum melenceng lebih jauh karena muatan lokal dari siti suka lebih ngawur than aslinya, baik kita memegang penjelasan resminya dari VBA Excel. Mengenai Object sendiri, pada topik “Understanding Object, Properties, Methods and Events” Mister Help bilang: An object represents an element of an application, such as a worksheet, a cell, a chart, a form, or a report. In Visual Basic code, you must identify an object before you can apply one of the object’s methods or change the value of one of its properties.Sedangkan di bagian “VB Reference”, dia bilang: Object (is) A combination of code and data that can be treated as a unit, for example, a control, form, or application component. Each object is defined by a class. Di bagian lain, class dideskripsikan sebagai: The formal definition of an object. The class acts as the template from which an instance of an object is created at run time. The class defines the properties of the object and the methods used to control the object's behavior. (English-nya tentu bagus, lha wong tinggal meng-kopi-en-pest dowang..).
OBJECT, HIERARKI, MEMBER DAN COLLECTION
Sebuah Object RumahTertentu dapat terdiri dari beberapa bagian dan ruangan. Mungkin ada RuangTamu, Dapur, KamarTidur, KamarMandi, Taman, Teras, Garasi, semua itu adalah object-object yang menjadi Member / Anggota dari RumahTertentu itu. Di dalam KamarTidur bisa terdapat object lain, misalTempatTidur, PesawatTV, Lemari dsb, dan mereka itu adalah Member dari Object yg mewadahinya yaitu Object KamarTidur.
Almari (atau Lemari?) bisa pula mempunyai anggota yang berupa object Koleksi RuangRuangDlmLemari, dan mungkin di dalam salah satu objectRuangDlmLemari terdapat Baju, Celana, Tshirt dan Object-object lain dari class Pakaian. Jika demikian Baju, Tshirt dkk itu adalah Anggota dari Object RuangDlmLemari tsb.
Bila kita perintahkan “Adek, tolong hidupkan PesawatTV”, si Adek mungkin masih binun’ karena instruksinya belum sejelas “Tolong hidupkan TV yang ada di RuangKeluarga”. (bahasa planetnya mungkin seperti ini: RuangKeluarga.PesawatTV.OnOffMode = True).
Di RumahTertentu itu bisa terdapat beberapa PesawatTV, misal di RuangTamu, di RuangKeluarga, di Dapur dst. Pesawat-pesawat TV ini membentuk sebuah Object Koleksi (Collection) bernama PesawatPesawatTV, walaupun masing-masing anggotanya terletak di (menjadi anggota dari) Object-Object yang berlainan, tetapi masih ada di dalam Object di hierarki yg lebih tinggi yaitu Object RumahTertentu. Dapat dikatakan bahwa Koleksi Object Pesawat-PesawatTV menjadi anggota langsung dibawah object RumahTertentu.
Gambaran pengertian Hierarki dan hubungan antar Object yang ada di dalam VBA Excel yg sudah disinggung di serial “..at a Glance” nyaris persis seperti itu. Perhatikan pula kata Member dan Collection.
Collection: An object that contains a set of related objects. An object's position in the collection can change whenever a change occurs in the collection; therefore, the position of any specific object in the collection can vary.
Member: An element of a collection, object, or user-defined type.
Di luar hubungan antar object, Setiap Object mempunyai paling tidak 3 hal: yaitu Properties, Methods, dan Events. Ketiga elemen ini akan kita coba fahami pengertiannya satu persatu, tetap menganalogikan dengan keadaan nyata di sekitar kita.
OBJECT DAN PROPERTY
Property adalah ciri-ciri khusus atau karakteristik yg dimiliki sebuah object, setiap Property mempunyai Nilai tertentu. Nilai / Value sebuah property berupa besaran yang dapat berjenis Bilangan, NilaiLogika (False/True) bisa pula berupa Teks. Sebuah object bisa memiliki puluhan property. Mr Help bilang: Property (is) A named attribute of an object. Properties define object characteristics such as size, color, and screen location, or the state of an object, such as enabled or disabled.
KendaraanTertentu1 misalnya, bisa mempunyai Property bernama Merk, JumlahRoda, WarnaCat, SistemRem, JumlahPintu, DayaTampung, JenisMesin dsb. Bandingkan dengan Objec Worksheet yang mempunyai properties: Name, Range, Cells, Rows, Comments, QueryTable, ProtectionMode, ScrollArea dsb.
Property JumlahRoda milik KendaraanTertentu1 itu, saat ini mungkin berisi data (Value) = 4, property Merk = “Tupai”, WarnaCat = Ungu, PowerSteering = True, BisaMundur = False dst.
Sebuah Worksheet, beberapa propertynya mungkin seperti ini: Name = “Sheet6”, ScrollArea = “A1:F5000”, Visible = xlVeryHiden, DisplayPageBreak = False dst.
Sebuah Range misal Range(“A1”) bisa mempunyai properties sbb: Address =$A$1, Value = 1200, Formula = B1*C1 , Row=1, Column=1, CurrentRegion = $A$1:$F$20, Interior.ColorIndex = 4, Font.ColorIndex = 1, dst
Nilai-nilai properti itu nantinya pada saat yang tepat dapat kita ubah dan/atau manfaatkan untuk diolah dan dimanipulasikan bersama sama dengan nilai property milik object-object lain, demi mencapai tujuan program.
Satu contoh lagi agar pengertian property dapat lebih difahami.
Seorang (sebuah object) ManusiaTertentu dapat kita kumpulkan informasi mengenai dirinya dari properties yg dimilikinya. Misalnya: Name = “Siti”, Wajah = “Cakep”, UsiaTahun = 13, WarnaRambut = vbPirangPirang, WarnaKulit = vbKayakDukuPelembang, Jenis= Wanita, Height = 167, Weight = 56,SifatDasar = vbCeriwis, Visible = False, IQrate = vbJongkok, dan seterusnya.
(mohon maaf bagi para milis-member terutama yang bernama Siti, karakter dan peristiwa dalam sinetron ini hanya fiktif, bila ada kesamaan-kesamaan hanyalah kebetulan belaka. Kritik, protest dan saran harap dilayangkan langsung ke penulisnya, cc: produsernya..)
Argument / Parameter bagi Properties.
Di VBA Excel, dalam mengekspresikan Object.Property, sering kita harus menambahkan argument / parameter. Argument / Parameter bukan Value milik property tsb. Dia (berupa data / ekspresi) bertugas membantu property untuk menegaskan ruang lingkup yang akan dijangkau oleh property. Tidak semua properties membutuhkan argument. Beberapa argument yang ada pun bisa bersifat optional.
Misal Property Range syntax resminya ada dua seperti ini
1: expression.Range(Cell1)
2: expression.Range(Cell1, Cell2)
Sintaks versi pertama, Property Range mempunyai 1 argument bernama Cell1. Pada praktek pemakaiannya, Cell1 ini kita isi dengan angka index. Jadi bila Objectnya adalah Sheet1, maka Range(1) akan merujuk ke Cell A1, Range(2) merujuk ke Cell B1 (bukan A2, karena A2 adalah cell ke 257) Range(16777216)merujuk ke cell IV65536 yaitu cell terakir di pojok kanan bawah di sheet1 bila Excelnya bukan Excel 2007 (Excel 2007 konon punya jumlah cell yg lebih banyak daripada kakaknya: Excel 2003.
Pada sintaks versi kedua, argumentnya ada dua, yang formalnya bernama Cell1 dan Cell2. Argument Cell1 menghendaki nilai / ekspresi yg menunjukkan Cell Pojok KiriAtas, argument Cell2 mengendaki nilai / ekspresi yg merujuk ke cell KananBawah, karena Properti ini akan merujuk sebuah Area, segugus Cell (Range) yg tak-terpisah membentuk bangunan persegi.
Argument(s) bagi sebuah property, bila dituliskan harus diapit oleh tanda kurung; bila lebih dari satu, antar argument harus diberi tanda antara berupa , (koma) misal:Object.Property(arg1,arg2,arg3), seperti cara penulisan argument di sintaks Fungsi.
Contoh lain, mengenai property Address milik object Range:
Syntax 2: expression.Address(RowAbsolute, ColumnAbsolute, ReferenceStyle, External, RelativeTo)
Property Address bila dituliskan tanpa argument akan menghasilkan data teks yg menggambarkan alamat si Object (Range) nya.
Misal Range(“MyTable”).Address mungkin akan menghasilkan teks “$A$1:$D$200”, selalu alamat dengan rujukan absolut.
Bila kita akan menuliskan alamat dengan rujukan yg “ndak absolut” bagaimana ? Nah di sinilah peran argument/parameter mulai terasa gunanya. Oiya, kelima parameter milik property Address tsb bersifat optional.
Sheets(“DATA”).Range(“MyTable”).Address (False), maksudnya RowAbslutnya dinyatakan False, sehingga menghasilkan “$A1:$D200”
Jika anda tulis Sheets(“DATA”).Range(“MyTable”).Address False
akan menghasilkan error karena argument / parameternya tidak dikurungi seperti perkutut si Adek di serial sebelumnya.
Me-Relatifkan Row dan Column:
Sheets(“DATA”).Range(“MyTable”).Address (False, False)
Ingin hasilnya dalam referensi alamat cell dengan style R1C1, dengan memFalse-kan parameter ReferenceStylenya
Sheets(“DATA”).Range(“MyTable”).Address (True, False, False)
Cara yg tidak membingungkan (tetapi harus berani repot) adalah dengan menuliskan argument FORMAL-nya, misal
Range(“MyTable”).Address(RowAbsolute:=False, ColumnAbsolute:=False, ReferenceStyle:=False)
Dengan cara ini urutan tempat parameter boleh dibolak-balik, dan parameter yang diloncati tidak perlu diberi tanda pemisah kosong.
Dan seterusnya.. (lihat di helpnya)
OBJECT DAN METHODS
Method (Metoda) adalah kemampuan atau tindakan yang dapat dilaksanakan oleh sebuah object. A procedure that acts on an object, begitu kata Mr. Help.
Kembali ke alam sekitar kita, Object KendaraanTertentu1 tadi bisa dihidupkan mesinnya (Start), Belok, Mundur, Melaju, KlaksonBunyi, Berhenti, dsb. Itu lah beberapa Method milik KendaraanTertentu1.
ManusiaTertentu yg property Name-nya = “Siti” tadi, juga punya beberapa metoda, misalnya, DudukManis, Berdiri, Berlari, Merunduk, Memukul, Menjitak, Menangis, Teriak, Berrias, Tersenyum, Tertawa, Memfitnah, MenggandakanDiri, Terbang, Menghilang dsb.
Object Workbook mempunyai methods antara lain: Open, Activate, Add, Protect, Unprotect, MergeWorkBook, Close, Save, SaveAs, SaveCopyAs, PintOut dsb.
Di Object Worksheet ada methods: Activate, Calculate, ChartObject, Copy, Delete, Evaluate, Move, Paste, PivotTables, PrintOut, Protect, SaveAs, Scenarios, Select, SetBackGroundPicture, ShowAllData, Unprotect, dsb.
Mothod yg dimiliki Object Range, misalnya: Activate, AddCommnet, AutoFill, AutoFit, AutoFormat, AutoOutline, BorderArround, Calculate, CheckSpelling, Clear, ClearComments, ClearContents, ClearFormats, ClearNotes, ClearOutline, Consolidate, Copy, CopyPicture, CreateNames, Cut, DataSeries, Delete, DialogBox, FillDown, FillUp, FillRight, FillLeft, Find, FindNext, FindPrevious, FunctionWizzar, GoalSeek, Group, Insert, Justify, Merge, Parse, PasteSpecial, PrintOut, PrintPreviuw, Run, Select, Show, ShowError, Sort, SubTotal, Table, TextToColumn, UnGroup, UnMerge, dst. Banyak amat yak..?
Object TextBox punya metoda-metoda: Copy, Cut, Move, Paste, SetFocus, Zorder.
Contoh kecil: bila suatu object Textbox diberlakukan metoda SetFocus-nya (TextBox1.SetFocus ) maka yang terjadi adalah Object tsb mendapat focus, artinya dialah satu satunya object yg saat itu mampu / siap menerima masukan dari keyboard atau klikMouse, ditandai dengan beradanya kursor di object tsb.
Jumlah Property dan Method bagi setiap object tidak sama, tetapi cukup banyak. Seperti telah disinggung pada “..At A Glance” sedemikian banyaknya item janganlah membuat hati ciut, takut tidak hafal, karena kita memang tidak perlu menghafal. Kalau ada alat bantu paling canggih, maka Object Browser lah namanya. Di ObjectBrowser (tekan F2 dari jendela VBE) kita dapat melihat seluruh classes, objects, properties dan methods, tertayangkan dalam organisasi hierarki yg jelas.
Misal pada saat kita menunjuk Object Range, member yang ada di lingkupnya jelas tergelar di sebelah kanannya. Setiap member diberi ikon tertentu yang menggambarkan jenisnya. Ada Ikon yang menggambarkan Class, ikon Object, ikon Property dan ikon Methods. Bahkan kita lihat: DefaultProperty vs Property yang bukan default, ada tanda pembedanya.
Hasil dari pengubahan suatu property kadang kadang SAMA DENGAN hasil diberlakukannya sebuah Metoda. Misalnya:
Sheet1.Cells(1,4),ClearContents dan Sheet1.Cells(1,4).Value = “”
Metoda ClearContents mengosongkan Nilai yang ada pada Cell D1, Pengubahan property Value menjadi balnk (“”) mengakibatkan hal yang sama.
Parameter / Argument bagi Methods.
Seperti pada Property, Methods juga ada yang memerlukan parameter / argument untuk membantu melaksanakan prosesnya. Misal Methode SaveAs milik Object Workbook. Salah satu dari dua syntaks nya :
Expression.SaveAs(Filename, FileFormat, Password, WriteResPassword, ReadOnlyRecommended, CreateBackup, AddToMru, TextCodePage, TextVisualLayout)
Jadi Method SaveAs (pada sintaks versi satu) mempunyai 9 buah parameter. Semua parameter ditulis setelah Method-nya tanpa tanda kurung, antara parameter satu dengan parameter berikutnya diberi tanda pemisah sebuah , (karakter koma). Bila ada parameter yg tidak kita berikan, tempat/lokasinya tetap harus diberi tanda pemisah.
Penulisan Method dan Parameternya pada Method Protect milik Worksheet. Kelima parameter tsb bersidat optional.
Syntaks: expression.Protect(Password, DrawingObjects, Contents, Scenarios, UserInterfaceOnly)
Menuliskan codenya:
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=False
Dicontohkan disini 5 parameter hanya di tuliskan 3 parameter no. 2,3 dan 4, lengkap dengan panduan parameter-Formalnya.
Penulisan tsb dapat disingkat dengan TANPA menuliskan parameter formalnya:
ActiveSheet.Protect ,True,True,False
Koma pertama itu memberi tempat kosong kepada parameter Password yang dikosongkan (tanpa password). Parameter² berikutnya tidak ditulis artinya mengikuti default-nya.
Aturan Penulisan Parameter / Argument bagi Methods (maupun bagi Properties) perlu mendapat porsi perhatian khusus, karena di titik inilah kita sering “ndak-tahu-sedang-berdiri-di-mana” alias “binun”. Semua penjelasan detil: methods & parameternya tertulis lengkap di Help.
OBJECT DAN EVENTS
Mengenai Event, di banyak textbook sering dijelaskan sebagai "peristiwa yg terjadi terhadap:", tetapi siti lebih senang bilang : "penderitaan yg dialami oleh:" sebuah Object. Lengkapnya: penderitaan yg dialami oleh sebuah object ketika terjadi interaksi antara program aplikasi (d.h.i.: Excel) dengan Pengguna / User-nya, secara langsung atau tidak langsung.
Yang dimaksud langsung, misalnya kita: membuka Workbook, mengaktifkan salah satu Sheet1, mengubah nilai sebuah cell di Sheet1, mengKlik sebuah Buttondsb. Aksi-aksi tsb mengakibatkan terjadinya Event Open yg diderita oleh Workbook; Sheet1 akan menderta event Activate, dan juga Event Change (karena salah satu Cellnya diubah), dan si Button mengalami Event Click.
Kalau “tidak langsung”, contohnya: ketika kita mengklik tombol bagian bawah / kiri pada SpinButtonX, langsung mengakibatkan Event SpinDown terjadi, (si SpinButtonX menderita di-SpinDown). Itu jelas. Tetapi karena SpinButtonX itu ternyata juga dikaitkan dengan sebuah Textbox1 maka nilai di TextBox1 berubah, ini mengakibatkan terjadinya Event lain yaitu Event CHANGE yg diderita oleh TextBox1. Kait-mengait itu sering pula tidak hanya dua rantai sepert itu, bisa 3 atau lebih kaitan. Hal ini bila tidak disadari akan menyebabkan kita menuduh VBA sbg: “suka aneh” melaksanakan instruksi² yg tidak kita suruh.. (Padahal: ada event lainyg diderita oleh sebuah object lain, akibat dari object pertama yg juga menderita suatu Event, sedangkan Event Lain tsb memang sudah ada Event-Procedure-nya)
Jadi tepatnya, apa pengertian Event itu ? Kembali kita mengutip sabda Mr. Help : An event is an action recognized by an object, such as clicking the mouse or pressing a key, and for which you can write code to respond. Events can occur as a result of a user action or program code, or they can be triggered by the system.
Di sini malah lebih luas, karena ternyata Event bisa terjadi (occurred) tidak hanya akibat aksi dari pengguna tetapi juga karena aksi oleh program maupun sistem.
Maka…, bila kemarin-kemarin siti pernah bilang: memandangi sebuah worksheet itu adalah sebuah Event (karena Worksheet “menderita dipandangi” oleh User, atau telah terjadi peristiwa “pe-mandang-an” oleh user terhadap si Woksit), maka itu ternyata: “ndak betul” alias ngawur walaupun ngaku-nya: guyon (berjanda)…
Untuk dapat disebut Event ternyata harus memenuhi syarat: peristiwa yang terjadi akibat dari interaksi user / program / system vs Aplikasi. Setelah memenuhi syarat pun belum tentu Event itu adalah event resmi, yaitu event yg oleh VBA Excel sudah dimasukkan ke daftar Event para Objects. Daftar Event untuk setiap object jumlahnya sudah tertentu, mungkin akan bertambah pada versi Excel berikutnya.
Di keadaan nyata di sekitar kita, Event pada sebuah Object dapat digambarkan begini:
Kendaraan dengan Merk “Tupai” yg sudah diceritakkan di atas, bisa mengalami Event: DiStart, Direm, KenaTilang, Kecelakaan, Dicat, DiisiBBM (property BBMnya = Water. ya??), Dijual dsb.
Sebuah object TextBox mempunyai banyak events antara lain: AfterUpdate, BeforeUpdate, Change, DoubleClick, Enter, Error, Exit, KeyDown, KeyUp, KeyPress, MouseUp, MouseDown, MouseMove, dsb.
Untuk apa VBA menyediakan “daftar” hampir semua kemungkinan yg dapat diderita oleh para objects? Maksudnya tak lain agar kita bisa membuat sesuatu terlaksana secara otomatis berdasarkan salah satu penderitaan yg sedang dialami oleh sebuah object. Tujuh kata terakhir itu, sekali lagi, oleh VBA diistilahkan sebagai “Event”.
Event dan Event Procedure
Kita kembali ke object ManusiaTertentu yg berProperty Name-nya = ”Siti” lagi.
Event yg dapat terjadi / dialami oleh object ini antara lain: Dilahirkan, Disentuh, Dicayang, Kecopetan, Didorong, UlangTahun, SiapNaikPanggung, Diadili, Marriage, Wisuda, DiOperasiPlastik (ada yang bilang: plastiknya bertulisan: “P-i-o-n-e-e-r”, ..plastik ember dong..) dsb.
Sementara itu sejak lama Ibu sudah menyiapkan sebuah Prosedur “bancakan” yaitu serangkaian acara makan nasi tumpeng sederhana dengan mengundang teman-teman kecil siti ke rumah, karena di desa, tidak perlu bawa kado segala macam.
Begitu Event UlangTahun terjadi, maka “prosedur bancakan” itu terlaksana dengan sendirinya, murah, meriah, karena sudah disiapkan oleh Ibu dan “ditulis dibawahEvent Prosedur” yg memanfaatkan terjadinya Event UlangTahun si Object.
Setiap Object punya daftar Event masing-masing. Daftar Event perlu kita ketahui karena akan berguna bagi kita: untuk menentukan KAPAN suatu tindakan/aksi perlu dilaksanakan.
Satu contoh, sebuah Sheet bernama Report akan dicetak. Syntax nya: Sheets(“Report”).PrintOut. Tetapi KAPAN instruksi ini akan dilaksanakan?. Kita maunya: PADA SAAT tombol OK di-pencet. Kebetulan Tombol (CommandButton) punya daftar event, salah satunya = event Click, Jadi: kita bisa membuat sebuahEvent Procedure kira-kira spt ini:
Sub Tombol_Click()
Sheets("Report").PrintOut
End Sub
Tombol adalah Object yang salah satu Eventnya kita tungu-tunggu, Click adalah sebuah Event milik Tombol, dan PrintOut adalah sebuah Method milik Object Sheets(“Report”). Semua itu tergabung dlm sebuah Prosedur. Contoh itu memenuhi syarat untuk disebut sbg sebuah Event Procedure, karena dia akan mampu otomatis melaksanakan instruksi di dalamnya jika Event yang tertera pada NamaProsedur-nya betul-betul terjadi.
Hal yg dapat kita catat di sini adalah: Memberi Nama prosedur-event tidak BEBAS seperti memberi nama prosedur-biasa. Ada aturan kecilnya, yaitu
NamaProsedur = NamaObject_NamaEvent([Argument],[Argument],..)
Bila Object tsb memiliki Module tersendiri (misal: Workbook, Worksheet, UserForm), maka aturannya menjadi:
NamaProsedur = NamaClass_NamaEvent([Argument],[Argument],..)
dan prosedur event nya harus ditulis di Module milik Object tsb.
Setiap saat memang banyak sekali Event terjadi dan diderita oleh para Objects. Tetapi hal itu tidak akan menimbulkan /mengakibatkan apapun, kecuali kita sudah menyiapkan sebuah prosedur yg kita kaitkan dengan sebuah Event tertentu. Cara mengkaitkan sebuah Prosedur dengan sebuah Event ialah dengan memberi nama prosedur tsb secara khusus seperti aturan di aatas.
Contoh nama prosedur Event, 8 Events yg dimiliki oleh Worksheet versi Excel 2000:
(note setiap Worksheet adalah object di Excel yg punya Module tersendiri)
Private Sub Worksheet_Activate()
End Sub
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
End Sub
Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
End Sub
Private Sub Worksheet_Calculate()
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
End Sub
Private Sub Worksheet_Deactivate()
End Sub
Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink)
End Sub
Membuat Pembuka dan Penutup code Prosedur Event itu tidak sulit karena sudah diotomatiskan oleh VBA, kita tidak perlu mengetikkan secara manual, tinggal memilih Object dan Nama Event-nya.
Di suatu Module, misal modul milik UserForm1, Didalam UserForm tsb sudah terlukis sebuah SpinButton yang Property Name-nya = SpinButton1. Perhatikan di Jendela Code, di bagian atas terdapat dua comboBox.
Di Box sebelah kiri, pilih salah satu Nama Object yg ada, misal SpinButton1.
Di Box sebelah kanan pilih Nama Event dari Daftar Event yang muncul. Misal Event SpinUp.
Maka seketika di Jendela Code akan tertulis sbb:
Private Sub SpinButton1_SpinUp()
End Sub
Di antara pembuka dan penutup code Event-Prosedur tsb kita tinggal menuliskan rangkaian instruksi yang kita inginkan. Instruksi tsb akan otomatis terlaksana jika TombolAtas SpinButton1 tsb di-Klik (di-spin-up), yang berarti terjadi Event SpinUp pada Object SpinButton1.
Pada pilihan Oject dan Event lain, VBA sering pula menyiapkan argument-argument yg mungkin diperlukan, seperti terlihat pada contoh Events Procedures milik Worksheet.
Sampai di titik ini mudah-mudahan “Event Mafhum” sudah terjadi pada, atau diderita oleh, “Object Pembaca”, khususnya mengenai Property, Method dan Event. Dan bila begitu, dongeng pun harus disudahi. Tetapi ada satu hal kecil yg terlewat, mengenai object Kendaraan Tertentu diatas, khusus tentang salah satu property-nya, begini:
Ketika “object siti” berkesempatan numpang “object KendaraanTertentu” itu, terjadi dialog ini:
Pak Sopir, Pak Sopir, ini kendaraan kalau jalan kok bunyi semua to Pak ?
Iya Neng, memang kendaraan ini kalau bergerak, SEMUA property-nya berbunyi, pintunya kreot-kreot, pedal-pedal rem, kopling dan gas nya kriyet-kriyet, bangku-bangkunya grobyak-grabyek, wiper-nya gerrak-gerruk, suspensinya geludag-geluduk. SEMUA berbunyi dan kalau perlu: bisa dengan sengaja dibunyikan, kecuali SATU Neng,.
Kecuali apanya Pak.. ?
“Klakson-nya !!”
“?”
bhaktiasih house of nurses, st elizabeth, semarang // april 6, 2007 // siti Vi
special thanks to mbak hardaning & mbak hapsari for her & her kind supports & atentions
EmoticonEmoticon