7/01/2016

Memahami VBA Excel Versi Alm Siti Vi

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.
 
  Sumber : Milis belajar-excel

 

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 KendaraanRumahKuadalah object dari class BangunanKipasAngin adalah object dari class PeralatanRumahTanggaUndangUndangNo11/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: Book1Book2, 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.

CollectionAn 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.

MemberAn 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.
Syntaksexpression.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 Eventdi 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 WorkbookSheet1 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 objectTujuh 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 Tomboldan 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