[belajar-excel] VBA Macro Jam Digital [1 Attachment]

classic Classic list List threaded Threaded
2 messages Options
Reply | Threaded
Open this post in threaded view
|

[belajar-excel] VBA Macro Jam Digital [1 Attachment]

Hendry Mahmud
Assalamu'alaikum.
 

 Dear Mr. Kid dan Teman2 Milis Excel.

 

 

 Mohon Petunjuk,
 

 Gimana Membuat Jam Digital Pada Excel, Menggunakan Vba Macro Di Excel.
 - Jam Digital Tersebut Dapat Berjalan Secara Langsung (Itu Lebih Baik)
 - Atau Jam Digital Tersebut Dijalankan Dengan Menggunakan Perintah "Tombol Start/Stop".
 

 Terima Kasih Atas Petunjuk Dan Bantuannya.
 

 



 Regards,
 

 Hendry Mahmud
 Mobile : +6281343738898
 

 Note : Contoh Terlampir




jam digital plus miliseconds 1.png (13K) Download Attachment
Kid
Reply | Threaded
Open this post in threaded view
|

Re: [belajar-excel] VBA Macro Jam Digital

Kid
Administrator
Wa'alaikumussalam wr wb

Hai Hendry,

Coba begini :
1. buat sebuah workbook baru, hapus sheets sampai bersisa sheet1 saja, ubah
nama sheet menjadi 'JAM', save as .xlsm, lalu ke VB Editor (Alt F11)
    * di VBE, pada project explorer akan tampak bahwa satu-satunya sheet
tersisa bernama Sheet1, dengan caption berbunyi 'JAM'
2. insert sebuah general module (menu Insert -> Module), aktifkan module
baru tersebut
3. buat sebuah prosedur dengan scope public bertipe sub, misal dengan nama
DJAM, dan isi dengan baris-baris kode berikut :
    'waktu akan ditulis di sheet1 (yang ber-caption 'JAM') pada cells A1
   do while true
        sheet1.range("a1").value=evaluate("now()")       'kalau
ketepatannya hanya sampai detik, evaluate("now()") bisa diganti dengan now
        doevents
   loop
4. kembali ke worksheet (ALT F11), save workbook, jalankan prosedur DJAM
tadi

sudah jadi ya ?



hmmm...
Itu tadi prinsip dasarnya.
Kunci proses di atas adalah loop dan doevents


proses di atas bisa dikembangkan.
Misal, membuat proses bisa dikontrol kapan mulai dan kapan berhenti, yaitu
dengan mengatur batas loop dalam bekerja.
ok, kembali ke VBE,
Pada proses di atas, batas loop di-set tetap dengan TRUE. Nilai ini bisa
diubah dengan variabel. Misal variaberl bernama bJAM yang bertipe Boolean.
Jadi, di baris pertama ruang general modul dibuat dulu variabel ber-scope
public bernama bJAM dengan tipe Boolean.
      public bJAM as boolean
Lalu bagian TRUE dalam prosedur DJAM diubah menjadi bJAM (nama variabel
yang dibuat tadi).
   do while bjam
        sheet1.range("a1").value=evaluate("now()")       'kalau
ketepatannya hanya sampai detik, evaluate("now()") bisa diganti dengan now
        doevents
   loop

Pengaturan nilai bJAM bisa dilakukan melalui prosedur baru untuk mulai
(misal bernama DJAM_Start) dan prosedur baru untuk berhenti (misal bernama
DJAM_Stop).
Di dalam prosedur mulai, diisi baris kode set nilai variabel bJAM dengan
nilai TRUE, lalu panggil prosedur DJAM
      bjam=true
      djam
Di dalam prosedur berhenti, diisi baris kode set nilai variabel bJAM dengan
nilai FALSE dan tidak perlu memanggil prosedur DJAM.
      bjam=false

Kalau ingin ada tombol untuk mulai dan berhenti, di dalam worksheet bisa
dibuatkan tombol tersebut. Lalu isi perintahnya dengan memanggil prosedur
DJAM_Start pada tombol mulai dan memanggil prosedur DJAM_Stop pada tombol
berhenti.


Sampai sini, jam digital sudah terbentuk apa adanya. Bisa dimulai dan bisa
dihentikan oleh user melalui sebuah tombol.


Tapi, urusannya tidak sesimpel itu. Proses diatas (setelah dimulai), akan
terhenti jika user mengubah sesuatu di window yang tampak. Misal mengisi
nilai tertentu di cells G7.
untuk urusan ini, tentu saja membutuhkan penangkapan peristiwa (event)
ketika user selesai mengubah suatu nilai. Event ini adalah event change.
Supaya semua event change di semua sheet bisa tertangkap, maka event change
dipakai adalah event change yang ada di object ThisWorkbook. Jadi,
ke VBE -> double click object ThisWorkbook -> pada lembar kosong penulisan
kode, lihat combobox di atas lembar tersebut
-> combobox sisi kiri dipilih workbook, combo sisi kanan dipilih
SheetChange -> muncul blok prosedur event tersebut (ini cara membuat
prosedur event suati object)
Dalam blok prosedur itu diisi baris kode untuk memeriksa apakah cells yang
berubah nilainya itu bukan cells A1 di sheet1 yang ber-caption JAM. Jika
bukan, maka panggil prosedur DJAM_Start
    if not (sh.codename=sheet1.codename and target.address="$A$1") then
DJAM_Start
atau berupa blok if (direkomendasikan) seperti ini
    if not (sh.codename=sheet1.codename and target.address="$A$1") then
         DJAM_Start
    endif

naah... sampai sini, kalau jamnya dah mulai, lalu ada cells yang berubah
nilai, si jam tetap bergerak.


biasanya,
kalau dah sampai sini,
trus rada ngelunjak (tapi ini masih bisa dibilang sesuai fitrahnya) pengen
kalau workbook dibuka, jamnya langsung bekerja.
Untuk hal ini, pada prinsipnya adalah tidak bisa.
Bisanya adalah beberapa saat setelah dibuka barulah jamnya dijalankan,
supaya Excel sempat punya kekuasaan penuh untuk menampilkan workbook secara
baik.
Untuk kebutuhan hal ini, yaitu mengatur agar DJAM dijalankan beberapa saat
setelah Excel punya kuasa penuh menyelesaikan pekerjaannya membuka
workbook, diperlukan fungsi (methods) bernama OnTime milik Application.
Beberapa saatnya bisa dimulai untuk 1 detik setelah Excel memegang kuasa
penuh.
Pengaturan ini diletakkan di prosedur DJAM_Start saja.
Baris pemanggil DJAM diubah agar dipanggil beberapa saat kemudian, maka isi
prosedur DJAM_Start menjadi begini :
     bjam=true
     application.ontime now+timevalue("00:00:01"), "DJAM"       '1 detik
setelah saat ini [Now], barulah menjalankan prosedur bernama DJAM yang ada
di workbook ini

Kalau sudah begini, Excel sudah nyaman dalam bekerja, jadi kemungkinan si
Excel akan protes dan memberontak menjadi semakin kecil.
Sekarang tinggal mengatur saja events yang ingin ditangkap untuk memulai
menjalankan si DJAM.
Misal event Open milik ThisWorkbook, yang diisi dengan baris kode pemanggil
prosedur DJAM_Start.
Sebaiknya di event BeforeClose milik workbook juga diberi penghenti jam,
yaitu dengan memberi baris kode pemanggil prosedur DJAM_Stop.

Events yang lain bisa dikembangkan kemudian.
Misal : kalau pindah workbook, lalu kembali ke workbooknya si-jam, si jam
kembali bekerja.
   > buat event di thisworkbook untuk event activate dan windowactivate,
lalu isi dengan baris kode pemanggil prosedur DJAM_Start

Untuk event yang lain, seperti kalau window nya di-resize atau ada refresh
data connection, atau buka hyperlink tertentu yang ada dalam workbook, bisa
dibuat seperti contoh event tersebut di atas.
Isi prosedur eventnya hanya memanggil prosedur DJAM_Start kok.

met bermain dan mencoba...


Regards,
Kid





On Wed, Dec 12, 2018 at 9:17 PM HENDRY MAHMUD [hidden email]
[belajar-excel] <[hidden email]> wrote:

>
>
> Assalamu'alaikum.
>
> Dear Mr. Kid dan Teman2 Milis Excel.
>
>
> Mohon Petunjuk,
>
> Gimana Membuat Jam Digital Pada Excel, Menggunakan Vba Macro Di Excel.
> - Jam Digital Tersebut Dapat Berjalan Secara Langsung (Itu Lebih Baik)
> - Atau Jam Digital Tersebut Dijalankan Dengan Menggunakan Perintah "Tombol
> Start/Stop".
>
> Terima Kasih Atas Petunjuk Dan Bantuannya.
>
>
> Regards,
>
> Hendry Mahmud
> Mobile : +6281343738898
>
> Note : Contoh Terlampir
>
>
>