Coba juga untuk mengubah nama prosedur SetTimer dengan nama lain seperti SetMyTimer Caranya : 1. aktifkan Module1 2. CTRL H 3. Find : SetTimer ; Replace : SetMyTimer ; opsi pilih CurrentModule ; tekan Replace All 4. ganti bagian Find bertuliskan StopTimer ; replace menjadi StopMyTimer ; opsi pilih current module ; tekan replace all 5. tekan Cancel 6. save workbook dan tutup workbook 7. buka lagi workbooknya
Wassalam, Kid. 2012/11/22 Mr. Kid <[email protected]> > Application.OnTime tidak ada bedanya antara xl2007 dengan versi lainnya. > > Script aktifkan pesan thread agar prosedur SetTimer dijalankan diwaktu > tertentu : > Public Sub SetTimer() > Dim lState As Long 'var status locked (0 = false alias bisa diubah > isi cellnya, selainnya tidak bisa) > Dim dtNext As Date 'data waktu akan dijalankannya lagi prosedur > settimer ini > > dtNext = Now() 'nilai waktu awal > lState = (Hour(dtNext) + 3) Mod 4 'set status > Sheet1.Protect "Belajar-Excel", userinterfaceonly:=True 'proteksi > sheet > Sheet1.Range("i2").Locked = (lState <> 0) 'set properti locked > milik cell i2 > > 'menentukan waktu untuk dijalankannya lagi prosedur settimer > > dtNext = Int(Now) + TimeValue(Hour(dtNext) & ":00:00") + TimeValue(2 - > lState Mod 2 & ":00:00") > > 'proses pesan thread agar pada waktu dtNext, prosedur bernama SetTimer > dijalankan > > Application.OnTime dtNext, "SetTimer" > End Sub > > > Script pembatalan pesanan thread proses di atas : > Public Sub StopTimer() > On Error Resume Next 'trap error > > 'batalkan pesanan thread > Application.OnTime Now + TimeValue("00:00:01"), "SetTimer", > schedule:=False > > 'clear error dan set trap error kembali seperti semula > > Err.Clear > On Error GoTo 0 > End Sub > > Jika masih error, coba : > 1. hapus dim dtNext as date dari dalam prosedur SetTimer > 2. buat deklarasi pada level module dengan scope public untuk variabel > dtNext bertipe date (sebelum prosedur SetTimer = baris kedua dalam lembar > script) > public dtNext as date > 3. pada prosedur stoptimer bagian : > > Now + TimeValue("00:00:01") > diubah menjadi : > dtnext > > Wassalam, > Kid. > > > > On Thu, Nov 22, 2012 at 8:12 PM, ngademin Thohari > <[email protected]>wrote: > >> ** >> >> >> mr. kid >> sudi kah kiranya menjelaskan di bawah ini, saya masih bingung plus awam >> >> Option Explicit >> >> Public Sub SetTimer() >> Dim lState As Long >> Dim dtNext As Date >> >> dtNext = Now() >> lState = (Hour(dtNext) + 3) Mod 4 >> Sheet1.Protect "Belajar-Excel", userinterfaceonly:=True >> Sheet1.Range("i2").Locked = (lState <> 0) >> dtNext = Int(Now) + TimeValue(Hour(dtNext) & ":00:00") + TimeValue(2 >> - lState Mod 2 & ":00:00") >> Application.OnTime dtNext, "SetTimer" >> End Sub >> >> Public Sub StopTimer() >> On Error Resume Next >> Application.OnTime Now + TimeValue("00:00:01"), "SetTimer", >> schedule:=False >> Err.Clear >> On Error GoTo 0 >> End Sub >> >> terima kasih >> >> amin >> >> >> > >

