Değişkeni İf ile birleştirme

Katılım
24 Temmuz 2019
Mesajlar
181
Excel Vers. ve Dili
2010 ve 2016 Türkçe
Altın Üyelik Bitiş Tarihi
19-10-2023
Merhaba arkadaşlar. Benim forumdaki arkadaşlar sayesinde hazırlanan bir makrom var. Bu makrom her veri yenilendikçe arka planda çalışmakta. Ben buna zamanlayıcı eklemeye çalıştım ve şöyle bir mantık oluşturdum. Eğer Çıkan mesajda evet veya hayır seçince, "deneme" adlı değişken TRUE olacak ve 10 saniye sonra False dönüştüren bir makro çalıştıracak. 10 saniye sonra makrom çalışıyor. Ama 10 saniye dolmadan mevcut sekmede veri yenileyince, arka plandaki makro çalışmaya hala devam ediyor.
Ortaya çıkan"VERİLER HATALI DÜZELTME UYGULANSIN MI?" yazan yazıya evet veya hayır verdikten sonra "deneme = True" hale gelmiyor. True haline gelmediği içinde,
If deneme = True Then
MsgBox "asdasdas Butonuna Tıkladınız."
Else

Sanki buradaki "If deneme = True Then" kısmı TRUE değilmiş gibi yine arka plandaki private Sub makrosunu çalıştırmaya devam ediyor. Umarım derdimi anlatabilmişimdir. Özetle tam olarak istediğim deneme değişkenini gerektiğinde True veya False yapıp İF ile de ona göre arka plandaki makroyu çalışır hale getirmek.
Kod:
Private Sub Worksheet_Calculate()
    With Sheets("D YAYINI")
  
    'If Sheets("Sayfa2").Range("A1") = "ABC YAYINI" Then
    Dim deneme As Boolean

        If Sheets("VERİ DOĞRULAMA").Range("J3") <> Sheets("VERİ DOĞRULAMA").Range("J4") Then
            Dim Komut As Integer
            Dim Mesaj As String
            Dim Baslik As String
            Dim alertTime
            Dim x As Byte, Satir As Byte

            If deneme = True Then
            MsgBox "asdasdas Butonuna Tıkladınız."
            Else
          
          
            Mesaj = "VERİLER HATALI DÜZELTME UYGULANSIN MI?"
            Baslik = "Başlık Burada Gözüküyor"
            Komut = MsgBox(Mesaj, vbYesNo, Baslik)
          
            If Komut = 6 Then
              
                For x = 1 To .Cells(.Rows.Count, 1).End(3).Row
                    If .Cells(x, 1).Interior.ColorIndex = xlNone Then
                        Satir = x
                        deneme = True
                        Exit For
                    MsgBox "DÜZELTME UYGULANMIŞTIR."
                    deneme = True
                    alertTime = Now + TimeValue("00:00:10")
                    Application.OnTime alertTime, "timerr"
                    End If
                Next
                .Range("A" & Satir & ":V" & Satir).AutoFill Destination:=.Range("A" & Satir & ":V51"), Type:=xlFillDefault
                deneme = True
            Else
            deneme = True
                If Komut = 7 Then
                    MsgBox "Hayır Butonuna Tıkladınız."
                    deneme = True
                    alertTime = Now + TimeValue("00:00:10")
                    Application.OnTime alertTime, "timerr"
                End If
            End If
        End If
        End If
    End With
End Sub


Sub Timerr()
'
' Timerr Makro
'
deneme = False
MsgBox ("makro çalıştı")
'
End Sub
 

systran

Destek Ekibi
Destek Ekibi
Katılım
15 Aralık 2007
Mesajlar
1,573
Excel Vers. ve Dili
2007 [TR], 2013 [TR]
örnek bir çalışma paylaşır mısınız?
 
Katılım
24 Temmuz 2019
Mesajlar
181
Excel Vers. ve Dili
2010 ve 2016 Türkçe
Altın Üyelik Bitiş Tarihi
19-10-2023
"D Yayını" sekmesindeki kodları baz alarak inceleyebilirsiniz.
 

Ekli dosyalar

systran

Destek Ekibi
Destek Ekibi
Katılım
15 Aralık 2007
Mesajlar
1,573
Excel Vers. ve Dili
2007 [TR], 2013 [TR]
şurada bir hata var sanki! Eğer koşul doğru ise Exit for dan aşağısı hiç çalışmaz.

If .Cells(x, 1).Interior.ColorIndex = xlNone Then
Satir = x
deneme = True
Exit For
MsgBox "DÜZELTME UYGULANMIŞTIR."
deneme = True
alertTime = Now + TimeValue("00:00:10")

Application.OnTime alertTime, "timerr"
End If
 
Katılım
24 Temmuz 2019
Mesajlar
181
Excel Vers. ve Dili
2010 ve 2016 Türkçe
Altın Üyelik Bitiş Tarihi
19-10-2023
şurada bir hata var sanki! Eğer koşul doğru ise Exit for dan aşağısı hiç çalışmaz.

If .Cells(x, 1).Interior.ColorIndex = xlNone Then
Satir = x
deneme = True
Exit For
MsgBox "DÜZELTME UYGULANMIŞTIR."
deneme = True
alertTime = Now + TimeValue("00:00:10")

Application.OnTime alertTime, "timerr"
End If
Çalışıyor hocam nasıl oluyorsa.
 
Üst