Makro Kodunuzu Duraklatmak için Excel VBA Uyku İşlevi

Excel VBA Uyku İşlevi

VBA Uyku işlevi, makro prosedürün belirli bir süre boyunca çalışmasını durdurmak veya duraklatmak için kullanılan, Windows DLL dosyalarının altında bulunan bir Windows işlevidir, bu süre sonunda programı devam ettirebiliriz.

Diğer görev setlerini tamamlamak için makro çalıştırma sürecimizi duraklatmamız gereken durumlar vardır. Diğer görevler, kodlamamızın veya diğer makro prosedürünün bir parçası olabilir veya mevcut excel makrosu için girdi olabilir. Programı çalışırken nasıl duraklatabilirsiniz? Prosedür kodunu kullanıcı tarafından belirlenen bir süre için duraklatabiliriz ve bundan sonra belirli bir miktar programa devam edebiliriz. Bunu VBA'da SLEEP fonksiyonunu kullanarak yapabiliriz.

VBA Uyku İşlevi Ne Yapar?

SLEEP, adından da anlaşılacağı gibi, "bir süre uyu", "bir süre dinlen", "bir süre ara ver", bir süre izin ver "vb. . Bunu kullanarak makro kod sürecini geciktirebiliriz.

SLEEP adında yerleşik bir işlevimiz olduğunu düşünüyorsanız, yanılıyorsunuz çünkü VBA'da böyle bir işlev yok. Bunun yerine, bir pencere işlevi olarak Uyku adı verilen bir işleve sahibiz. Özel bir kod seti girerek, aslında bu işlevi VBA'da çağırabiliriz. Aslında, Windows DLL dosyalarında bulunan bir işlevdir, bu nedenle VBA'da alt yordamın başlamasından önce API'nin adlandırmasını açıklamamız gerekir.

VBA kodu aşağıdadır.

Kod:

#If VBA7 Sonra Genel Olarak PtrSafe Alt Uyku Lib "kernel32" (ByVal dwMilliseconds As LongPtr) 'Excel'in 64 Bit sürümleri için #Else Public Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)' Excel #End If

Makro kodlarını yazmaya başlamadan önce yukarıdakileri kopyalayıp modülünüze yapıştırın. Modülünüze bu şekilde yapıştırılmalıdır.

Misal

Size kodu yazmanın yolunu göstermeden önce, uyku fonksiyonundan biraz daha bahsedeyim. İşlemi milisaniyeler içinde geciktirir. Yani 1 saniye 1000 milisaniyeye eşittir, 10 saniye duraklamak istiyorsanız 10000 milisaniye olmalıdır.

Örnek 1

API kodu Alt prosedürün başlangıcından önce yapıştırıldığında, bir makro adı oluşturun.

Kod:

#Sub Sleep_Example1 () End Sub

İki değişkeni dizge olarak bildirin.

Kod:

Dim StartTime As String Dim EndTime As String

İçin StartTime değişken ZAMAN işlevinin değerini atayın. Not: Excel işlevindeki TIME, geçerli zamanı döndürür.

Kod:

StartTime = Zaman

Şimdi bu mesajı VBA mesaj kutusunda göstereceğiz.

Kod:

StartTime = Time MsgBox StartTime

Şimdi uyku işlevini kullanarak kodu 10 saniye duraklatacağız. Dediğim gibi, kodu milisaniye cinsinden duraklatıyor, bu yüzden 10 saniye duraklatmak için. 10000 milisaniye kullanmamız gerekiyor.

Kod:

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

Şimdi ikinci değişken olan EndTime'ı kullanın ve geçerli saati atayın.

Kod:

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

Şimdi , StartTime ve EndTime adlı iki değişken , makronun başlangıç ​​ve bitiş zamanlarını tutacaktır. Bu makroyu çalıştırın; ilk olarak, makro başlangıç ​​saatini, yani sisteminizdeki mevcut saati göreceğiz.

Tamam'a tıklayın. 10 saniye uyuyacak. Tampon sembolünü görebilirsiniz.

10 saniye sonra, kodu devam ettirmeye başlayacak ve böylece bitiş zamanını gösterecek, yani 10 saniye bekledikten sonra şu anki saat nedir.

Şimdi makronun 10:54:14 de başlayıp 10:54:24’de bittiğini görebilirsiniz, yani, 10 saniyelik farkın tam olarak orada olduğunu görebilirsiniz. Bu 10 saniyede, VBA çalışan kodu duraklatır.

Örnek 2 - Döngülerde Uyku Fonksiyonu

Uyku, en iyi VBA'daki döngülerle kullanılır. Örneğin, VBA'da döngü yaparken Do kullanarak 1'den 10'a kadar seri numaraları eklemek istiyorum.

Bir numarayı girdikten sonra kodum 3 saniye beklemeli, yani döngü 10 kez çalıştığında toplamda 30 saniye olmalı.

Kod:

Alt Uyku_Örnek2 () Dim k As Tamsayı k = 1 K <= 10 Hücre (k, 1) .Değer = kk = k + 1 Uyku (3000) '1000 milisaniye 1 saniyedir, yani 3000, 3 saniyeye eşittir Döngü Sonu Alt

Bu kodu çalıştırın ve işlemi tamamlamak için en az 30 saniye beklemeniz gerekir.

Tam zamanı takip etmek için aşağıdaki kodu kullanın.

Kod:

Alt Sleep_Example2 () Dim k As Integer Dim StartTime As String EndTime As String StartTime = Time MsgBox "Kodunuz Başlıyor" & StartTime k = 1 Do while k <= 10 Cells (k, 1) .Value = kk = k + 1 Uyku (3000) '1000 milisaniye, 1 saniyedir, bu nedenle 3000, 3 saniyeye eşittir Döngü BitişTime = Zaman Mesaj Kutusu "Kodunuz Sona Erdi" & EndTime End Sub

Bu kod size 2 mesaj kutusu gösterecek, ilki başlangıç ​​zamanını ve ikincisi bitiş zamanını gösterecektir.

Not: Bu kodu çalıştırırken excel kullanamazsınız. Kaçış anahtarı bile çalışmayacaktır.

Ilginç makaleler...