VBA Bekle ve Uyku İşlevleri - Duraklat / Geciktir VBA Kodu

Bu öğretici, VBA'daki Bekle ve Uyku işlevlerini kullanarak kodun nasıl duraklatılacağını / geciktirileceğini gösterecektir.

Çok sayıda hesaplama yapan büyük VBA programları oluşturduğumuzda veya belki de harici programı çalıştırması için çağırdığımızda, harici işlem gerçekleşirken VBA kodumuzun belirli bir süre çalışmayı durdurmasını isteyebiliriz. VBA'nın bunu başarmak için birkaç yöntemi vardır.

Application.Wait Yönteminin Kullanımı

Bir sonraki adımı gerçekleştirmeden önce makromuzun çalışmasını bir süre veya belirli bir süreye ulaşana kadar duraklatmamız gerekirse, Uygulama.Bekleyin yöntem. Bu, örneğin, bir web sitesine oturum açma işlemini otomatikleştirdiysek ve makromuz çalışmaya devam etmeden önce sayfa yüklenene kadar birkaç saniye beklememiz gerekiyorsa yararlı olabilir.

1 Saniye Bekle

Aşağıdaki satırı makronuza dahil ettiğinizde çalışması yaklaşık 1 saniye duraklatılacaktır:

1 Application.Wait (Now + TimeValue("0:00:01"))

Kadar bekleyin

Bazı durumlarda belirli bir zamana kadar beklemeniz gerekecektir. Bu satırın altındaki makronuz sabah 9'dan önce ilerlemeyecektir:

1 Başvuru. "09:00:00" bekleyin

Lütfen unutmayın Uygulama.Bekleyin 1 saniyeden kısa gecikmeleri kabul etmez.

VBA Programlama | Code Generator sizin için çalışıyor!

Uyku Yöntemi Kullanımı

Makronuzu duraklatmak için daha kesin bir yola ihtiyacınız varsa Uyku yöntemini kullanabilirsiniz.

Uyku bir Windows API işlevidir, yani VBA'nın bir parçası değildir. Özel bir bildirim deyimi kullanılarak erişilebilir.

Microsoft Office'in 64 bit sürümünü kullanıyorsanız, Uyku işlevini kullanmak istediğiniz yeni bir modüle veya modülün başına (doğrudan alt programda değil) aşağıdaki ifadeyi ekleyebilirsiniz:

1 Public Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal Milisaniye As LongPtr)

32 bit sürümde bu satırı kullanın:

1 Public Declare Sub Sleep Lib "kernel32" (ByVal Milisaniye As LongPtr)

Uyku işlevini bildirdikten sonra, aşağıdaki gibi alt rutinlerinizde buna erişebilirsiniz:

1 10000 uyku

Bu satırın üzerindeyken makronuz 10.000 milisaniye, yani 10 saniye duraklatılacaktır.

Do Olayları ile Döngü Kullanma

Bekle ve Uyku yöntemlerini kullanmanın en büyük dezavantajı, kullanıcının makronun devam etmesini beklerken Excel'de hiçbir şey yapamamasıdır. Bir kullanıcı, Excel'in yanıt vermeyi durdurduğunu düşünebilir ve kullanıcı daha sonra Ctrl+Ara makroyu kesmek için, bu, başlangıçta makroya bir duraklama koyma amacını ortadan kaldırır.

Bu sorunun üstesinden gelmek için DoEvents adında bir yöntemle bir döngü kullanabiliriz.

1234567 Genel Alt Test()Dim kadar uzuni = 1 ila 20000 içinAralık(“A1”).Değer = iDoEventssonraki benAlt Bitiş

Şimdi, Excel yukarıdaki makroyu çalıştırırken, kullanıcı Excel ile etkileşime devam edebilir - örneğin sekmeleri değiştirebilir veya hücreleri biçimlendirebiliriz - temel olarak makro çalışmaya devam eder ancak Excel ekranı donmaz. Excel'de bir zamanlayıcı işlevi oluşturmak için benzer bir döngü kullanabiliriz ve DoEvents zamanlayıcı çalışırken ekranı çözmek için bu yöntemde.

Arkadaşlarınızla sayfasını paylaşan sitenin gelişimine yardımcı olacak

wave wave wave wave wave