VBA Duraklatma | Uyku ve Bekleme İşlevini kullanarak VBA Kodunu Duraklatın

VBA Kodunun Çalışmasını Duraklat

VBA Duraklatma , kodun belirli bir süre çalıştırılmasını duraklatmak ve VBA'daki bir kodu duraklatmak için application.wait yöntemini kullanıyoruz.

Bir şeyi gerçekleştirdikten sonra büyük VBA projeleri oluşturduğumuzda, diğer görevleri yapmak için bir süre beklememiz gerekebilir. Bu tür senaryolarda görevimizi yerine getirmek için makro kodunu nasıl duraklatırız? VBA kodunu iki işlevi kullanarak belirli bir süre için duraklatabiliriz ve bu işlevler "Bekle" ve "Uyku" dur.

Bekleme Yöntemi Kullanılarak Kod Nasıl Duraklatılır?

"Bekle", makroyu belirli bir süre çalışır durumda tutmak için VBA'da kullandığımız işlevdir. Bu işlevi uygulayarak kodumuzun ne zamana kadar beklemesi gerektiğini belirtmemiz gerekir.

Bu VBA Pause Excel Şablonunu buradan indirebilirsiniz - VBA Pause Excel Template

Örneğin, kodu 13: 00: 00'da çalıştırıyorsanız, saati “13:15:00” olarak verirseniz, makroyu 15 dakika çalışır durumda tutacaktır.

Şimdi, VBA'daki WAIT işlevinin bağımsız değişkenine bakın.

Zaman argümanında kodumuzun ne zaman duraklaması veya beklemesi gerektiğini belirtmemiz gerekir.

Örneğin, aşağıdaki VBA koduna bakın.

Kod:

 Alt Duraklatma_Örnek1 () Aralık ("A1"). Değer = "Merhaba" Aralık ("A2"). Değer = "Hoş Geldiniz" Uygulama.Bekleme ("13:15:00") Aralık ("A3"). Değer = " VBA "End Sub 

Bu kodu çalıştırırken sistem saatimin 13:00:00 olduğunu unutmayın, kodu çalıştırdığım anda ilk iki satırı çalıştıracak yani

Aralık ("A1"). Değer = "Merhaba" & Aralık ("A2"). Değer = "Hoş Geldiniz"

Ama bir sonraki satıra bakarsanız Application.Wait (“13:15:00”) yazıyor, bu yüzden bu satır görevlerini yerine getirdikten sonra makromum 15 dakika duraklatılacak, yani 13: 00: 00'dan sistemime kadar bekleyecek saat 13:15:01 'e ulaşır.

Sistem zamanım o zamana ulaştığında, kalan kod satırlarını çalıştıracak.

Aralık ("A3"). Değer = "VBA'ya"

Ancak, duraklatma kodunu uygulamanın en iyi yolu bu değildir, diyelim ki kodu farklı zamanlarda çalıştırıyorsunuz, o zaman NOW VBA fonksiyonunu TIME VALUE fonksiyonu ile kullanmamız gerekiyor.

Şimdi işlev, üzerinde çalıştığımız sisteme göre geçerli tarih ve saati döndürür.

TIME Value işlevi, saati 00:00:00 ile 23:59:29 arasında tutar.

Tamam, kodu her çalıştırdığımızda kodu 10 dakika duraklatmamız gerektiğini varsayalım, o zaman aşağıdaki kodu kullanabiliriz.

Kod:

 Alt Duraklatma_Örnek1 () Aralık ("A1"). Değer = "Merhaba" Aralık ("A2"). Değer = "Hoş Geldiniz" Uygulama.Bekleme (Şimdi () + Zaman Değeri ("00:00:10")) Aralık (" A3 "). Değer =" VBA'ya "Son Alt 

Bu önceki koda benzer, ancak tek fark ŞİMDİ & ZAMAN DEĞERİ işlevini eklemiş olmamızdır.

Bu kodu her çalıştırdığımızda, yürütmeyi 10 dakika boyunca tutacak veya duraklatacaktır.

Uyku Yöntemini Kullanarak VBA Kodunu Nasıl Duraklatırım?

Uyku, yerleşik bir işlev olmadığı için VBA'da karmaşık bir işlevdir. Yerleşik olmadığı için onu kullanıma hazır hale getirmek için aşağıdaki kodu modülümüzün üstüne eklememiz gerekiyor.

Kod:

# Eğer VBA7 Sonra Kamu PtrSafe Alt Uyku Lib "kernel32" (ByVal dwMilliseconds As LongPtr) '64 Bit Sistemler İçin # Else Public Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long) # End If' 32 Bit Sistemler İçin 

Yukarıdaki kodu kopyalayıp modülün en üstüne yapıştırmanız yeterlidir.

Yukarıdaki kodu eklememizin nedeni SLEEP, Windows DLL dosyalarında sunulan bir VBA işlevi olduğundan, alt prosedüre başlamadan önce adlandırmayı bildirmemiz gerekir.

Tamam, şimdi SLEEP fonksiyonu örneğine bakalım.

Kod:

 Sub Pause_Example2 () Dim StartTime As String Dim EndTime As String StartTime = Time MsgBox StartTime Sleep (10000) EndTime = Time MsgBox EndTime End Sub 

Önce String olarak iki değişken tanımladık.

 Dim StartTime As String Dim EndTime As String 

Daha sonra TIME excel fonksiyonunu StartTime değişkenine atadık. TIME işlevi, sisteme göre geçerli zamanı döndürür.

StartTime = Zaman

Sonra mesaj kutusunda gösterilmesi için aynısını atadık.

MsgBox Başlangıç ​​Zamanı

Daha sonra UYKU işlevini Uyku (10000) olarak uyguladım.

Burada 10000 milisaniyedir ve VBA'da 10 saniyeye eşittir.

Sonunda, EndTime değişkenine bir TIME işlevi daha atadım .

Şimdi yine zamanı göstermek için bir kod yazdım.

Bitiş Zamanı = Zaman

Bu, başlangıç ​​ve bitiş zamanı arasındaki farkı gösterecektir.

Şimdi kodu çalıştıracağım ve başlangıç ​​zamanının ne olduğunu göreceğim.

Kodu çalıştırdığımda sistem saatim 13:40:48 ve şimdi kodum 10 saniye uyuyacak. Sonunda benim zamanım şu şekildedir.

Böylece, bunun gibi, kodu belirli bir süre çalıştırmasını durdurabiliriz.