MS Office VBA Makrolarında Zamanlayıcı Kullanma

click fraud protection

Aklımızı derinlemesine düşünenler için VB.NET, geri dönüş yolculuğu VB6 kafa karıştırıcı bir yolculuk olabilir. VB6'da bir Zamanlayıcı kullanmak böyledir. Aynı zamanda, kodunuza zamanlanmış işlemler eklemek yeni VBA Makroları kullanıcıları için açık değildir.

Yeni başlayanlar için zamanlayıcılar

Kodlama Word'de yazılmış bir testi otomatik olarak zamanlamak için bir Word VBA makrosu bir zamanlayıcı kullanmak için tipik bir nedendir. Diğer bir yaygın neden, kodunuzun farklı bölümleri tarafından ne kadar zaman harcandığını görmek, böylece yavaş bölümleri optimize etmeye çalışabilirsiniz. Bazen, bilgisayar sadece orada boşta oturuyor gibi göründüğünde uygulamada bir şey olup olmadığını görmek isteyebilirsiniz, bu bir güvenlik sorunu olabilir. Zamanlayıcılar bunu yapabilir.

Bir Zamanlayıcı Başlatma

Bir zamanlayıcıyı OnTime deyimini kodlayarak başlatırsınız. Bu ifade Word ve Excel'de uygulanır, ancak hangisini kullandığınıza bağlı olarak farklı sözdizimi vardır. Word için sözdizimi:

ifadesi. OnTime (Ne zaman, İsim, Tolerans)

instagram viewer

Excel için sözdizimi şöyle görünür:

ifadesi. OnTime (En erkenZaman, Yordam, LatestTime, Program)

Her ikisinin de ortak birinci ve ikinci parametreleri vardır. İkinci parametre, ilk parametredeki zamana ulaşıldığında çalışan başka bir makronun adıdır. Aslında, bu ifadeyi kodlamak, VB6 veya VB.NET terimleriyle bir olay alt programı oluşturmak gibidir. Olay ilk parametrede zamana ulaşıyor. Olay alt programı ikinci parametredir.

Bu, VB6 veya VB.NET'te kodlanma biçiminden farklıdır. Birincisi, ikinci parametrede adlandırılan makro erişilebilir herhangi bir kodda olabilir. Microsoft Word belgesinde, Normal belge şablonuna koymanızı önerir. Başka bir modüle yerleştirirseniz, Microsoft tam yolu kullanmanızı önerir: Project. Modülü. Makro.

İfade genellikle Uygulama nesnesidir. Word ve Excel belgeleri, bir iletişim kutusunun veya başka bir işlemin belirli bir süre içinde çalışmasını engellemesi durumunda üçüncü parametrenin olay makrosunun yürütülmesini iptal edebileceğini belirtir. Excel'de, bu durumda yeni bir zaman planlayabilirsiniz.

Zaman Olayı Makrosunu Kodlama

Word'deki bu kod, sınama süresinin dolduğuna dair bir bildirim görüntülemek ve sınamanın sonucunu yazdırmak isteyen yöneticilere yöneliktir.

Herkese Açık Alt TestOnTime ()
Hata ayıklama. Yazdır "Alarm 10 saniye içinde kapanacak!"
Hata ayıklama. Yazdır ("OnTime Öncesi:" ve Şimdi)
alertTime = Şimdi + Zaman Değeri ("00:00:10")
Uygulama. OnTime alertTime, "EventMacro"
Hata ayıklama. Yazdır ("OnTime Sonrası:" ve Şimdi)
End Sub
Alt EventMacro ()
Hata ayıklama. Yazdır ("Etkinlik Makrosu Yürütülüyor:" ve Şimdi)
End Sub

Bu, hemen pencerede aşağıdaki içeriğe neden olur:

Alarm 10 saniye içinde kapanacaktır!
Zamanından Önce: 25/12/2000 19:41:23
OnTime Sonrası: 12/25/2000 19:41:23 PM
Olay Makrosunu Yürütme: 27.02.2010 19:41:33

Diğer Office Uygulamaları için Seçenek

Diğer Office uygulamaları OnTime uygulamıyor. Bunlar için birkaç seçeneğiniz var. İlk olarak, PC'nizden gece yarısından bu yana geçen saniye sayısını döndüren ve kendi matematiğinizi yapan Zamanlayıcı işlevini kullanabilirsiniz veya Windows API çağrılarını kullanabilirsiniz. Windows API çağrılarının kullanılması, Zamanlayıcıdan daha hassas olma avantajına sahiptir. İşte Microsoft tarafından önerilen hile yapan bir rutin:

Özel Beyan Fonksiyonu getFrequency Lib "kernel32" _
Diğer Ad "QueryPerformanceFrequency" (Para Birimi Olarak cyFrequency)
Özel Bildirme İşlevi getTickCount Lib "kernel32" _
Diğer Ad "QueryPerformanceCounter" (Para Birimi Olarak cyTickCount)
Alt TestTimeAPICalls ()
Dim dTime As Double
dTime = MicroTimer
StartTime Bekar Olarak Kısıl
StartTime = Zamanlayıcı
İ = 1 ila 10000000 için
Dim j As Çift
j = sqr (i)
Sonraki
Hata ayıklama. Yazdır ("MicroTimer Alınan süre:" ve MicroTimer - dTime)
End Sub
İşlev MicroTimer () Çift Olarak
'
'Saniye döndürür.
'
Para Birimi Olarak Dim cyTicks1
Para Birimi Olarak Statik CyFrekans
'
MicroTimer = 0
'Frekans alın.
CyFrequency = 0 ise getFrequency cyFrequency
Keneler olsun.
getTickCount cyTicks1
'Saniye
CyFrequency ise MicroTimer = cyTicks1 / cyFrequency
Bitiş Fonksiyonu

instagram story viewer