• DİKKAT

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

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:
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
 
Ç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

3tn3hl2.png

Hocam kodu denedim fakat çalışmadı
 
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
 
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
 
Geri
Üst