event workbook open hanya dijalankan 1 kali, yaitu saat workbook di-open.

File bertipe .xlsm, .xls, .xlsb, .xla, .xlam yang memanfaatkan event
workbook open, hanya akan dijalankan 1 kali saat workbook tersebut dibuka
dan tidak ada hubungannya dengan workbook lain dibuka.

Jadi file addin (.xla, .xlam) yang punya event workbook open, maka event
tersebut hanya dijalankan 1 kali, yaitu saat si file addin di-load oleh
excel. Kapan ? Saat Excel dibuka (BUKAN saat workbook dibuka) jika si addin
telah diaktifkan.

Untuk tujuan yang Anda maksud, coba pelajari lebih dulu tentang class
module, kemudian dilanjutkan dengan object withevents.


Kembali ke kasus awal...
Jadi prosedur workbook open dan prosedur suara tersebut di sebuah file
addin ya... Misal sebut saja file addin ini bernama siAdd
Begini...
Anggap saja file addin bernama siAdd sudah diaktifkan di Excel tersebut
oleh si mimin kompi.

Suatu hari, ketika Excel belum dibuka sama sekali... datanglah seekor user
yang kemudian membuka Excel yang sudah aktif addin siAdd-nya (bukan membuka
sebuah file Excel, tetapi membuka aplikasi Excel). Maka event workbook yang
ada di dalam siAdd dijalankan. Ingat, belum ada workbook apapun yang dibuka.

Kemudian si user membuka file bernama rahasia.xlsx melalui menu File Open.
Karena .xlsx, maka tidak ada event workbook open di rahasia.xlsx. Ketika si
rahasia.xsx selesai dibuka, tidak terjadi apa-apa. Event workbook open nya
siAdd tidak bekerja sama sekali karena event itu milik siAdd dan tidak
mungkin dipanggil oleh workbook apapun.

Karena si user sudah puyeng, ditutup semua workbook yang terbuka. Excel-nya
juga ditutup. Lalu ditinggal pulang.

Besoknya, si user datang lagi. Kali ini si user langsung ke windows
explorer dan double click file rahasia.xlsx untuk membuka si rahasia.xlsx.
Begitu file rahasia selesai di-double click di windows explorer, muncul
flashscreen nya si Excel. Terus si Excel belok (gak mau mendekati si
rahasia.xlsx yag di double click). Excel ke tempatnya siAdd dulu. Begitu
pintu rumah siAdd dibuka, event workbook open si Add langsung bekerja.
Akhirnya si Excel dan siAdd duduk bareng nungguin art-nya siAdd bikin kupi.

Lalu si Excel dan siAdd ngupi-ngupi bareng sambil ketawa-ketiwi
terbahak-bahak seakan-akan gak pernah punya dosa.

Setelah si Excel dengan siAdd selesai ngupi-ngupi, barulah si Excel ke
halte dekat windows explorer untuk jemput si rahasia.xlsx. Akhirnya si
rahasia.xlsx jadi naik panggung. Si user yang dah sedari tadi nungguin si
rahasia.xlsx naik panggung akhirnya bisa bernapas lega, karena hari itu si
user bisa merasakan puyeng kembali.

Jadinya, kesan bahwa si workbook event siAdd bekerja saat ada workbook lain
(seperti rahasia.xlsx yang dibuka) itu adalah prasangka yang terlalu baik
kepada Excel. Sampai-sampai Excel saja sungkan karena sudah disangkakan
sebaik itu, yang nyatanya tidak demikian (lah wong malah cuman ngupi-ngupi
bareng siAdd). Sampai-sampai si Excel heran... kok ya bisa ada yang
menyangkakan sebaik itu.


Coba deh diturut lagi kisah di atas... Yang aktif bekerja itu siExcel.
SiAdd cuman nungguin doink lalu ngajak ngupi-ngupi....
siAdd adalah temen yang kurang baik. Akhirnya siAdd kena gusur dan masuk
recyclebin.


Si Excel merasa kesepian dan mungkin juga dia lelah karena harus terus
bekerja tanpa ada kesempatan ngupi-ngupi lagi.

Suatu hari, si Excel dikenalin sama siiin.
Berhubung sudah hari senen, si user kembali ke windows Explorer dan double
click rahasia.xlsx. Flashscreen Excel tampil, dan si Excel pun tetep ogah
nyamperin si rahasia.xlsx. Kali ini Excel belok ke rumahnya siiin. Begitu
pintu rumah siiin diketok, workbook open siiin bekerja. Langsung deh si
Excel disapa dengan suara merdu siiin..."eh mas Excel... pagi-pagi dah
mampir kesini. Gak kerja mas ?"
Excel yang mantan karyawan ngeles.com langsung pasang jurus.... "Anu dek
in... Baru mau berangkat kerja tapi lupa gak bawa bekel."
Siiin langsung masuk ke dapur, ambil rantang dan diisi masakan enak. Balik
ke depan (Excel masih belum masuk ruang tamu loh) dan dikasihkan tuh
rantang isi masakan. "Nih mas, saya bawain bekel. Kerja yang penuh cemungud
ya..."
Wuuiiih... Excel langsung ngibrit enuh semangat ke tempat si rahasia.xlsx
sambil nunjukin tuh rantang bekel dari siiin... Sepanjang jalan dari halte
pinggir windows explorer sampai panggungnya si rahasia.xlsx, si Excel
cerita tentang rantang siiin.

Sampe-sampe, begitu si user membuka workbook lain yang namanya
laporan.xlsm, si Excel langsung dateng ketempatnya si laporan.xlsm dan
ngetok rumah si laporan.xlsm. Begitu si laporan.xlsm membuka pintu, si
Excel dah ngebet mo nyeritain rantang siiin, tapi si laporan masih harus
siap-siap dulu, jadi si Excel harus bersabar. Begitu si laporan dah selesai
siap-siap, si Excel langsung nyerocos nyeritain rantang siiin.


Nah... Addin tuh seperti siiin, bukan seperti siAdd...
SiAdd itu egois, cuma bekerja buat dirinya sendiri. Asal dia hepi, beres
dah.
Siiin itu tipikal supporter.

Siiin support Excel supaya rajin bekerja penuh semangat dengan rantangnya.

Jadi, kalau pengen setiap kali ada yang buka workbook, maka langsung ada
yang mengucapkan salam, maka suruh si Excel yang ngucapin salam. Bukan
addin-nya. Addin-nya nyediain rantang yang bikin si Excel ngocehin tuh
rantang terus menerus.

Karena Excel itu aplikasi, berarti rantang dari siiin itu isinya event
untuk aplikasi, bukan event untuk workbook.
Kalau mau membuat event untuk aplikasi, yang baik adalah membuat class
module khusus untuk mengelola event milik aplikasi.
Coba deh perhatikan...
event-event nya workbook dikelola di thisworkbook class module
event-event nya worksheet dikelola di masing-masing sheet class module.
jadi, event-event nya aplikasi dikelola di sebuah class module khusus untuk
si aplikasi. Class module ini yang dibuat dalam addin (seperti siiin yang
nyiapin rantang).


;)

Regards,
Kid












2016-02-20 18:19 GMT+07:00 Hendrik Karnadi hendrikkarn...@yahoo.com
[belajar-excel] <belajar-excel@yahoogroups.com>:

>
>
> Setiap kali ada yang buka workbook (apa saja) Mr. Kid, tentunya jika
> addinsnya kita kita aktifkan (centang).
>
> Kedua prosedur tsb berada dalam satu file AddIns (mis.MacroColl.xla).
>
> Terima kasih.
>
> Salam,
> HK
>
>
> Sent from Samsung Mobile
>
>
> -------- Original message --------
> From: "'Mr. Kid' mr.nm...@gmail.com [belajar-excel]"
> Date:20/02/2016 5:14 PM (GMT+07:00)
> To: BeExcel
> Subject: Re: [belajar-excel] Application.Onkey
>
>
>
> Terus terang, saya ndak mudeng maksudnya...
>
> Itu addin nya mau dibuat selalu menampilkan pesan setiap kali ada yang
> buka workbook atau hanya ditampilkan 1 kali saat instansi excel tersebut
> diaktifkan pertama kali ?
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
> 2016-02-20 11:44 GMT+07:00 Hendrik Karnadi hendrikkarn...@yahoo.com
> [belajar-excel] <belajar-excel@yahoogroups.com>:
>
>>
>>
>> Terima kasih Mr. Kid atas masukannya.
>>
>> Ceritanya saya ingin membuat beberapa prosedur dan "memasukkannya"
>> sebagai AddIns untuk membantu teman2 yang kesulitan pake macro.
>>
>> Sebagai sample saya ingin mem buat dua prodedur:
>> 1. Menggunakan event Workbook_Open untuk mengucapkan salam...
>> Private Sub Workbook Open ()
>> MsgBox "Hello" & VbCrLf & _
>> "How are  you today?", 64, "GREETINGS"
>> Suara
>>
>> 2. Saya tulis prosedur Suara di Module1...(untuk mengeluarkan suara yang
>> ditulis pada sel aktif file yang dibuka)
>> Sub Suara()
>> Application.ActiveCell.Speak
>> End Sub
>>
>> Saya punya satu file bernama "Contoh" yang di sel aktifnya ada
>> tulisan.."Hello, how are you today?".
>>
>> Inginnya, pada saat file Contoh dibuka keluar msgbox butir1 (sdh ok) dan
>> pada saat User menekan tombol "OK" keluar suara "Hello, how are you today"
>> (error).
>>
>> Yang terjadi (ketika User membuka file Contoh dan menekan tombol "Ok"),
>> keluar message
>> Run time error 91:
>> Object Variable or With block variable not set
>> (Warna kuning ada pada prosedur Suara).
>>
>> Namun jika prosedur Suara saya jalankan tersendiri pada saat file Contoh
>> sdh tampak (terbuka) dan sel pointer berada pada sel aktif maka akan keluar
>> suara
>> "Hello, how are you today".
>>
>> Demikian ceritanya Mr. Kid.
>> Mohon petunjuk bagaimana caranya supaya prosedur1 dan 2 bisa ngelink
>> (prosedur 2 langsung dieksekusi pada saat User menekan tombol "OK"
>>
>> Terima kasih.
>>
>> Salam,
>> HK
>>
>>
>> Sent from Samsung Mobile
>>
>>
>> -------- Original message --------
>> From: "'Mr. Kid' mr.nm...@gmail.com [belajar-excel]"
>> Date:20/02/2016 7:07 AM (GMT+07:00)
>> To: BeExcel
>> Subject: Re: [belajar-excel] Application.Onkey
>>
>>
>>
>> Pak HK,
>>
>> Begini :
>> 1. Workbook X menjalankan prosedur TANPA input parameter di workbook X
>>          Application.OnKey "keynya disini" ,
>> "nama_prosedur_di_workbook_yang_sama"
>> 2. Workbook X menjalankan prosedur DENGAN input parameter di workbook X
>>         (
>>             misal prosedur yang dijalankan memiiki 2 input parameter,
>>                  parameter 1 meminta nilai bertipe text atau datetime
>>                  parameter 2 meminta nilai bertipe numerik atau boolean
>>         )
>>          Application.OnKey "keynya disini" , 
>> "'nama_prosedur_di_workbook_yang_sama
>> ""Param1"" , Param2'"
>>     >> param1 adalah nilai text atau datetime yang ditulis sebagai text
>> berformat YYYY-MM-DD
>>     >> param2 adalah nilai numerik atau boolean
>>
>> 3. Workbook X menjalankan prosedur TANPA input parameter di workbook A
>> yang terbuka di instansi Excel yang sama
>>      *** kalau terbuka di instansi Excel yang berbeda, maka tidak mungkin
>> dilakukan
>>          Application.OnKey "keynya disini" , "'nama workbook.ekstensinya
>> '!nama_prosedur_di_workbook_A"
>>
>> 4. Workbook X menjalankan prosedur DENGAN input parameter di workbook A
>> yang terbuka di instansi Excel yang sama
>>      *** kalau terbuka di instansi Excel yang berbeda, maka tidak mungkin
>> dilakukan
>>          Application.OnKey "keynya disini" , "'nama workbook.ekstensinya
>> '!'nama_prosedur_di_workbook_A ""Param1"" , Param2'"
>>
>> Untuk nomor 3 dan 4, jika workbook A belum terbuka, penulisan workbooknya
>> harus lengkap (file fullname alias ada path-nya).
>>
>>
>> Regards,
>> Kid
>>
>>
>>
>>
>> 2016-02-19 18:00 GMT+07:00 hendrik karnadi hendrikkarn...@yahoo.com
>> [belajar-excel] <belajar-excel@yahoogroups.com>:
>>
>>>
>>>
>>> Dear Be-Exceler,
>>> Saya sedang mencoba menggunakan VBA...."Application.OnKey" yang menurut
>>> panduan penulisannya adalah sbb :
>>> Application.OnKey(*Key As String*,[Procedur])
>>>
>>> Saya ingin menjalankan Prosedur bernama Coba yang ada di Workbook
>>> lain (bersifat public)  setelah menekan tombol Enter.
>>> Saya tulis seperti ini:
>>> Application.OnKey "{Enter}", "{Coba}"
>>>
>>> Namun prosedur Coba tidak dijalankan...
>>>
>>> Pertanyaan saya:
>>> Bagaimana penulisannya agar prosedur Coba bisa dijalankan ?
>>>
>>> Terima kasih.
>>>
>>> Salam,
>>> HK
>>>
>>>
>>
> 
>
  • [belajar-excel] A... hendrik karnadi hendrikkarn...@yahoo.com [belajar-excel]
    • Re: [belajar... 'Mr. Kid' mr.nm...@gmail.com [belajar-excel]
    • Re: [belajar... Hendrik Karnadi hendrikkarn...@yahoo.com [belajar-excel]
      • Re: [bel... 'Mr. Kid' mr.nm...@gmail.com [belajar-excel]
    • Re: [belajar... Hendrik Karnadi hendrikkarn...@yahoo.com [belajar-excel]
      • Re: [bel... 'Mr. Kid' mr.nm...@gmail.com [belajar-excel]
    • Re: [belajar... Hendrik Karnadi hendrikkarn...@yahoo.com [belajar-excel]
      • Re: [bel... 'Mr. Kid' mr.nm...@gmail.com [belajar-excel]
    • Re: [belajar... Hendrik Karnadi hendrikkarn...@yahoo.com [belajar-excel]
      • Re: [bel... 'Mr. Kid' mr.nm...@gmail.com [belajar-excel]

Kirim email ke