Soru MAKROYU MAKROYLA DURDURMA

Katılım
27 Ocak 2023
Mesajlar
13
Excel Vers. ve Dili
Office 2019
Merhabalar, çalışan bir makroyu VBA'da başka bir makro ile nasıl durdurabilirim? Diyelim ki elimde her saniye internetten veri çeken bir makro var. Bunu başka bir butona atadığım makro ile durdurmak istiyorum. Nasıl yapabilirim?
 
Son düzenleme:
Katılım
24 Nisan 2005
Mesajlar
3,671
Excel Vers. ve Dili
Office 2016 EN 64 Bit
Altın Üyelik Bitiş Tarihi
25/05/2022
Merhabalar, çalışan bir makroyu VBA'da başka bir makro ile nasıl durdurabilirim?
Çalışan makro durmuyor ise döngüsel bir işlem yapıyordur.
Döngü içine doevents komutunu ekleyin.

Durdurma butonuna da durdur=true ekleyin.


C#:
Dim durdur As Boolean

Sub sureklicalisan()
durdur = False
For i = 1 To 10000000
 DoEvents

  Range("A3").Value = i

  If durdur Then Exit For
Next i
End Sub

Sub durdurbutonu()
    durdur = True
End Sub
 
Katılım
27 Ocak 2023
Mesajlar
13
Excel Vers. ve Dili
Office 2019
Çalışan makro durmuyor ise döngüsel bir işlem yapıyordur.
Döngü içine doevents komutunu ekleyin.

Durdurma butonuna da durdur=true ekleyin.


C#:
Dim durdur As Boolean

Sub sureklicalisan()
durdur = False
For i = 1 To 10000000
DoEvents

  Range("A3").Value = i

  If durdur Then Exit For
Next i
End Sub

Sub durdurbutonu()
    durdur = True
End Sub

Hocam kodu denedim fakat çalışmadı
 
Katılım
27 Ocak 2023
Mesajlar
13
Excel Vers. ve Dili
Office 2019
Benim kodumda döngü var ama Application.OnTime kullanıyorum, burda buton ile veri_cek makrosunun durdurulması gerek.
Kod:
Sub veri_cek()
//veri çeken kodlar, uzun olduğu için yazmadım
Application.OnTime DateAdd("s", 1, Now), "veri_cek"
End Sub
 
Katılım
24 Nisan 2005
Mesajlar
3,671
Excel Vers. ve Dili
Office 2016 EN 64 Bit
Altın Üyelik Bitiş Tarihi
25/05/2022
Durdur yöntemi için örnek dosya;

Application.OnTime kullanıyorsanız. stoptimer ile durdurabilirsiniz.
Örnek kodlart aşağıdaki şekilde.

C#:
Public Const Pause = 5 '5 saniye
Public Const cagrilanmakro = "tarih_kontrol"

Sub Auto_Open()
    StartTimer
End Sub

Sub Auto_Close()
    StopTimer
End Sub

Sub StartTimer()
    bekleme = Now + TimeSerial(0, 0, Pause)
    Application.OnTime earliesttime:=5, procedure:=tarih_kontrol, schedule:=True
End Sub

Sub tarih_kontrol()
    zamanstr = Format(Now(), "hh:mm:ss")
    If zamanstr = "12:00:00" And zamanstr <> eskizamanstr Then
       'Yapılacak ilşlemler.
    End If
    eskizamanstr = zamanstr
    StartTimer
End Sub

Sub StopTimer()
    On Error Resume Next
    Application.OnTime earliesttime:=bekleme, procedure:=cagrilanmakro, schedule:=False
End Sub
 
Üst