Kodun Çalışma Süresini Geciktir - Microsoft Excel


API kullanarak bir sub yordam içindeki kodların çalışma süresini (milisaniye cinsinden) istediğimiz kadar geciktirebileceğimiz alternatif bir makro kodudur.

Bilgi

“Neden kodun çalışma süresini geciktirmek isteyeyim ki?” tarzı bir soru aklınıza gelmiş olabilir. Bir örnekle açıklamaya çalışayım.

Örneğin bir dosyadan veri çekeceğinizi varsayalım ve bunun için de dosyayı açmanız gerekiyor. Gel gelelim dosya da büyük olduğundan açılması uzun sürüyor.

Şimdi eğer sizin kodlarınız dosya daha açılamadan çalışmaya devam ederse olmayan bir şey üzerinde bir şeyler yapmaya çalışır ki, bu istediğimiz bir şey değil. Bunun önüne geçebilmek için bunu kullanabiliriz mesela. İşte bu noktada “Dosya açılması 15 saniyeyi bulur, sen o zamana kadar bekle bakalım.” şeklindeki düşüncemizi hayata geçirmek için SleepEx fonksiyonu bir alternatif olabilir.

Kod


Option Explicit

#If VBA7 And Win64 Then
    Private Declare PtrSafe Function SleepEx Lib "kernel32" _
    (ByVal dwMilliseconds As Long, ByVal bAlertable As Long) As Long
#Else
    Private Declare Function SleepEx Lib "kernel32" _
    (ByVal dwMilliseconds As Long, ByVal bAlertable As Long) As Long
#End If


Sub KoduCalismaEsnasindaBeklet()
    'Kodlar ___
    
    SleepEx 2000, False
    
    'Kodlar ___
End Sub

Kod (Açıklamalı)


Option Explicit

'--------------------------------------------------
'VBA sürümüyle ve 32bit 64bit konusunda sıkıntı yaşamamak için
'kontrol yaptırıyoruz. Örneğin ilk şart sağlanmıyorsa kodlar
'VBA panelinde kırmızı renkte görünecek.
'--------------------------------------------------
#If VBA7 And Win64 Then
    Private Declare PtrSafe Function SleepEx Lib "kernel32" _
    (ByVal dwMilliseconds As Long, ByVal bAlertable As Long) As Long
#Else
    Private Declare Function SleepEx Lib "kernel32" _
    (ByVal dwMilliseconds As Long, ByVal bAlertable As Long) As Long
#End If


Sub KoduCalismaEsnasindaBeklet()
    'Kodlar ___
    
    
    
    '--------------------------------------------------
    'Sub yordamda kodların arasına
    '(gerekli gördüğümüz yere)
    'geciktirme fonksiyonunu ekledik.
    '
    'İlk parametre ne kadar geciktireceğimizi
    'milisaniye cinsinden belirlememize yarıyor.
    'İkinci parametrenin ne işe yaradığını
    'anlayamadım maalesef.
    '--------------------------------------------------
    SleepEx 2500, False
    
    
    
    'Kodlar ___
End Sub

Yararlanılan Kaynaklar
Etiketler
microsoft excel açıklamalı içerik microsoft excel vba