Menggunakan Timer di MS Office VBA Macros

Bagi kita yang memiliki pikiran yang mendalam VB.NET, perjalanan kembali ke VB6 bisa menjadi perjalanan yang membingungkan. Menggunakan Timer di VB6 seperti itu. Pada saat yang sama, menambahkan proses waktunya ke kode Anda tidak jelas bagi pengguna baru VBA Macro.

Pengatur Waktu Untuk Pemula

Coding makro Word VBA untuk secara otomatis mengatur waktu tes yang ditulis dalam Word adalah alasan umum untuk menggunakan timer. Alasan umum lainnya adalah untuk melihat seberapa banyak waktu yang diambil oleh berbagai bagian kode Anda sehingga Anda dapat bekerja pada mengoptimalkan bagian yang lambat. Kadang-kadang, Anda mungkin ingin melihat apakah ada sesuatu yang terjadi dalam aplikasi ketika komputer tampaknya hanya duduk diam, yang bisa menjadi masalah keamanan. Pengatur waktu dapat melakukannya.

Mulai Timer

Anda memulai timer dengan mengkodekan pernyataan OnTime. Pernyataan ini diimplementasikan dalam Word dan Excel, tetapi memiliki sintaks yang berbeda tergantung yang mana yang Anda gunakan. Sintaks untuk Word adalah:

instagram viewer

ekspresi. OnTime (Kapan, Nama, Toleransi)

Sintaks untuk Excel terlihat seperti ini:

ekspresi. OnTime (EarliestTime, Prosedur, LatestTime, Jadwal)

Keduanya memiliki parameter pertama dan kedua yang sama. Parameter kedua adalah nama makro lain yang berjalan saat waktu pada parameter pertama tercapai. Akibatnya, pengkodean pernyataan ini seperti membuat acara subrutin dalam istilah VB6 atau VB.NET. Acara ini mencapai waktu di parameter pertama. Subrutin acara adalah parameter kedua.

Ini berbeda dari cara dikodekan dalam VB6 atau VB.NET. Untuk satu hal, makro yang dinamai dalam parameter kedua dapat dalam kode apa pun yang dapat diakses. Dalam dokumen Word, Microsoft merekomendasikan untuk meletakkannya di templat dokumen Normal. Jika Anda memasukkannya ke modul lain, Microsoft merekomendasikan untuk menggunakan path lengkap: Project. Modul. Makro.

Ekspresi biasanya objek Aplikasi. Dokumentasi Word dan Excel menyatakan bahwa parameter ketiga dapat membatalkan pelaksanaan makro peristiwa jika terjadi dialog atau proses lain yang mencegahnya berjalan dalam waktu tertentu. Di Excel, Anda bisa menjadwalkan waktu baru jika itu terjadi.

Kode Waktu Makro Acara

Kode ini di Word adalah untuk administrator yang ingin menampilkan pemberitahuan bahwa waktu pengujian telah kedaluwarsa dan mencetak hasil pengujian.

Sub Publik TestOnTime ()
Debug. Cetak "Alarm akan berbunyi dalam 10 detik!"
Debug. Cetak ("Sebelum Tepat Waktu:" & Sekarang)
alertTime = Sekarang + TimeValue ("00:00:10")
Aplikasi. OnTime alertTime, "EventMacro"
Debug. Cetak ("Setelah Tepat Waktu:" & Sekarang)
End Sub
Sub EventMacro ()
Debug. Print ("Eksekusi Makro Acara:" & Sekarang)
End Sub

Ini menghasilkan konten berikut di jendela langsung:

Alarm akan berbunyi dalam 10 detik!
Sebelum OnTime: 12/25/2000 7:41:23 PM
Setelah Tepat Waktu: 12/25/2000 7:41:23 PM
Eksekusi Makro: 27/02/2010 19:41:33

Opsi untuk Aplikasi Office Lainnya

Aplikasi Office lainnya tidak menerapkan OnTime. Untuk itu, Anda memiliki beberapa pilihan. Pertama, Anda dapat menggunakan fungsi Timer, yang hanya mengembalikan jumlah detik sejak tengah malam di PC Anda, dan menghitung sendiri, atau Anda dapat menggunakan panggilan Windows API. Menggunakan panggilan Windows API memiliki keuntungan lebih tepat daripada Timer. Berikut adalah rutin yang disarankan oleh Microsoft yang melakukan trik:

Fungsi Deklarasi Pribadi getFrequency Lib "kernel32" _
Alias ​​"QueryPerformanceFrequency" (cyFrequency As Currency) As Long
Fungsi Deklarasi Pribadi getTickCount Lib "kernel32" _
Alias ​​"QueryPerformanceCounter" (cyTickCount As Currency) As Long
Sub TestTimeAPICalls ()
Dim dTime As Double
dTime = MicroTimer
Dim StartTime As Single
StartTime = Timer
Untuk i = 1 hingga 10.000000
Dim j As Double
j = Sqr (i)
Lanjut
Debug. Cetak ("MicroTimer Waktu yang diambil adalah:" & MicroTimer - dTime)
End Sub
Fungsi MicroTimer () Sebagai Ganda
'
'Pengembalian detik.
'
Dim cyTicks1 Sebagai Mata Uang
CyFrequency Sebagai Mata Uang Statis
'
MicroTimer = 0
'Dapatkan frekuensi.
Jika cyFrequency = 0 Maka getFrequency cyFrequency
'Dapatkan kutu.
getTickCount cyTicks1
'Detik
Jika cyFrequency Kemudian MicroTimer = cyTicks1 / cyFrequency
Fungsi Akhir

instagram story viewer