• DİKKAT

    DOSYA İndirmek/Yüklemek için ÜCRETLİ ALTIN ÜYELİK Gereklidir!
    Altın Üyelik Hakkında Bilgi

Timer İçin Do-Loop Problemi

Katılım
5 Ocak 2009
Mesajlar
1,586
Excel Vers. ve Dili
2003 Türkçe
Selam,
Userfomdaki BASLAT butonuna tıkladığımda 5 saniye sonra "süre bitti" uyarısı veriyor.
Buraya kadar herşey normal. Ancak, 5 saniye bitmeden ardı ardına BASLAT butonuna tıklıyorum. Daha sonra bekleme yapıyorum. "süre bitti" uyarısını 1'den fazla veriyor. Yani butona ne kadar bastıysam o kadar veriyor. Oysaki ben geç kaldığım en son süre için 1 kere versin istiyorum.
Bu problemi nasıl giderebilirim?

Örnek dosyam ektedir.
 

Ekli dosyalar

Selam,
Userfomdaki BASLAT butonuna tıkladığımda 5 saniye sonra "süre bitti" uyarısı veriyor.
Buraya kadar herşey normal. Ancak, 5 saniye bitmeden ardı ardına BASLAT butonuna tıklıyorum. Daha sonra bekleme yapıyorum. "süre bitti" uyarısını 1'den fazla veriyor. Yani butona ne kadar bastıysam o kadar veriyor. Oysaki ben geç kaldığım en son süre için 1 kere versin istiyorum.
Bu problemi nasıl giderebilirim?

Örnek dosyam ektedir.
Merhaba.
Şöyle olabilir:

Kod:
 Sub sure_baslat()
    [COLOR="#ff0000"]UserForm1.CommandButton1.Enabled = False[/COLOR]
    simdi = Timer
    
    Do
    DoEvents

    UserForm1.Label1 = Timer
    UserForm1.Label2 = Timer - simdi
     
    Loop Until (Timer - simdi) > 5
   
    MsgBox "Süre Bitti"
    [COLOR="Red"]UserForm1.CommandButton1.Enabled = True[/COLOR]
    
End Sub
 
Merhaba.
Şöyle olabilir:

Kod:
 Sub sure_baslat()
    [COLOR="#ff0000"]UserForm1.CommandButton1.Enabled = False[/COLOR]
    simdi = Timer
    
    Do
    DoEvents

    UserForm1.Label1 = Timer
    UserForm1.Label2 = Timer - simdi
     
    Loop Until (Timer - simdi) > 5
   
    MsgBox "Süre Bitti"
    [COLOR="Red"]UserForm1.CommandButton1.Enabled = True[/COLOR]
    
End Sub
ilginize teşekkür ederim. Ancak, asıl formum soru-cevap şeklinde. Yani cevap sonrası kodlar yeniden çalışacak. Sayac sıfırlanacak.
 
ilginize teşekkür ederim. Ancak, asıl formum soru-cevap şeklinde. Yani cevap sonrası kodlar yeniden çalışacak. Sayac sıfırlanacak.
Merhaba
O zaman mesajı şartlı verdirin: Aşağıdaki bölümleri değiştirip deneyin.
Kod:
 '....
    Loop Until (Timer - simdi) [COLOR="Red"]>=[/COLOR] 5
   [COLOR="#ff0000"]If (Timer - simdi) = 5[/COLOR] Then MsgBox "Süre Bitti"
End Sub
 
Son düzenleme:
Merhaba
O zaman mesajı şartlı verdirin: Aşağıdaki bölümleri değiştirip deneyin.
Kod:
 '....
    Loop Until (Timer - simdi) [COLOR="Red"]>=[/COLOR] 5
   [COLOR="#ff0000"]If (Timer - simdi) = 5[/COLOR] Then MsgBox "Süre Bitti"
End Sub
Teşekkür ederim,
verdiğiniz örnekten istifade ederek aşağıdaki gibi biraz değişiklikle sorun gideriliyor.

Kod:
Sub sure_baslat()

    simdi = Timer
    
    Do
    DoEvents
    UserForm1.Label1 = Timer
    UserForm1.Label2 = Timer - simdi
   
    [COLOR="Red"]Loop Until (Timer - simdi) = 5[/COLOR]
    MsgBox "Süre bitti"
    
End Sub

Ancak, daha önceden "=" kullandığımda, her nedense bazen, eşitliği görmüyordu. Timer biraz fazla değer veriyordu bu yüzden ">" işareti kullanmayı denemiştim.

Problem çözüldü. Ancak hala sebebini pek anlamış değilim. Do... Loop döngüsü alternatif kullanımları ile ilgili bilgi vermeyen isteyen arkadaşlar olursa beklerim.

iyi çalışmalar.
 
Geri
Üst