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

Kirim email ke