Application.OnTime Now'u Sıfırlatmak

Katılım
5 Ağustos 2009
Mesajlar
240
Excel Vers. ve Dili
Microsoft Office Excel 2010 32 Bit TR
Altın Üyelik Bitiş Tarihi
02.01.2019
Merhaba arkadaşlar sayfa içinde tabloya veri girdiğimizde işlem yaptığımızda private sub change olayında sayaç çalışıyor ve süre bitince kapat komutunu veriyor. Benim sormak istediğim her veri girdiğimizzde şu sayaçtaki saniye o an geriye sayarken 6 .saniyede diyelim, sayaç sıfırlayıp tekrar 12 den geriye doğruya çalışmaya başlayan bi kod varmıdır yani sayaç sıfırlatan bi kod.

Application.OnTime Now + TimeValue("00:00:12"), "kapat"
 
E

ExcelF1

Misafir
Neden sayacı sıfırlamak ? Kapat makrosunu engellemek istiyorsanız, kodu kaldırın.
Veya 6 saniye kaldığında sayaç 12'den tekrar başlayacaksa, bu tekrarlama kaç kez yapılacak ?
 
Katılım
5 Ağustos 2009
Mesajlar
240
Excel Vers. ve Dili
Microsoft Office Excel 2010 32 Bit TR
Altın Üyelik Bitiş Tarihi
02.01.2019
kapat şeklinde ben örnek verdim, benim asıl amacım sayacı hangi kodla sıfırlatabiliriz, Mesela Sayfa veri girdiğimde, Sayaç tekrar 12 den geri saymaya başlıycak eğer veri girmezsem normal süre bitince formu kapatcak. Yani bir nebze çalışma sayfası 12sn içinde veri girilmezse inaktifse hep kapancak.
 

halit3

Uzman
Uzman
Katılım
18 Ocak 2008
Mesajlar
12,852
Excel Vers. ve Dili
2003 excell türkçe
ve
2007 excell türkçe
kapat şeklinde ben örnek verdim, benim asıl amacım sayacı hangi kodla sıfırlatabiliriz, Mesela Sayfa veri girdiğimde, Sayaç tekrar 12 den geri saymaya başlıycak eğer veri girmezsem normal süre bitince formu kapatcak. Yani bir nebze çalışma sayfası 12sn içinde veri girilmezse inaktifse hep kapancak.
1 ve 3.Mesajınız dan fazla bir şey anlamadım sayfa diyorsunuz form diyorsunuz.

Sorunuz net anlaşılmadığından cevap vermek isteyenler veremiyor
Anladığım kadarıyla kod yazdım.

aşağıdaki kodu sayfanın kod bölümüne yazın ve sayfa1 e bir adet textbox nesnesi ekleyin.
dosyanızda sayfa1 ve sayfa3 mutlaka olmalı

Kod:
Private Sub Worksheet_Activate()
ThisWorkbook.ekle = 12
End Sub

Private Sub Worksheet_Change(ByVal Target As Range)
'If Intersect(Target, [F1]) Is Nothing Then Exit Sub
durdur
calistir
Sheets("Sayfa1").Select
End Sub
bu koduda bir modülün içine kopyalayın

Kod:
Dim saat

Sub calistir()
ThisWorkbook.ekle = 12 'makronun çalıştığı zaman dilimi
deneme
End Sub

Sub durdur()
On Error Resume Next
Application.OnTime saat, "deneme", , False
End Sub
Sub deneme()
saat = Now + TimeValue("00:00:" & ThisWorkbook.ekle)
Application.OnTime saat, "deneme"
kapat
End Sub

Sub kapat()
Sheets("Sayfa1").TextBox1.Text = Format(Now, "hh:nn:ss")

If ActiveSheet.Name = "Sayfa1" Then
Sheets("Sayfa3").Select
End If
sat = Sheets("Sayfa3").Cells(Rows.Count, "A").End(3).Row + 1
Sheets("Sayfa3").Cells(sat, 1).Value = Format(Now, "hh:nn:ss")
End Sub
bu koduda ThisWorkbook sayfasına kpyalayın.

Kod:
Public ekle As String ' buradaki ekle değişkeni makro kodundan gelmekte

Private Sub Workbook_Activate()
ThisWorkbook.ekle = 12
durdur
calistir
Sheets("Sayfa1").Select
End Sub
 

Ekli dosyalar

Üst