Kodu worksheets_Change Altında çalıştırma

Katılım
24 Temmuz 2019
Mesajlar
413
Excel Vers. ve Dili
EXCEL 2010 TÜRKÇE
Altın Üyelik Bitiş Tarihi
25-12-2023
İyi akşamlar;
Aşağıdaki kod module altında öalışıyor fakat Private Sub Worksheet_Change(ByVal Target As Range) altında çalışmıyor. Benim kavrayamadığım nedir ve kod nasıl revize edilmelidir?
Şimdiden teşekkür ederim.
Kod:
Sub doldur()
On Error Resume Next
Son = Cells(Rows.Count, "K").End(3).Row
For sat = 9 To Son
        For sut = 4 To 10
                    If Cells(sat, "K") = "MUAF" Then

                Cells(sat, sut) = "Yok"
                
            End If
      
 If Cells(sat, "K") = "" Then
Cells(sat, sut).ClearContents
End If

 Next
Next
End Sub
 
Katılım
15 Şubat 2021
Mesajlar
52
Excel Vers. ve Dili
Excel 2016/VBA
Altın Üyelik Bitiş Tarihi
17-02-2022
Merhaba.

Sub Worksheet_Change(ByVal Target As Range) komutu sayfadan bir veri silindiğinde veya girildiğinde veya herhangi bir değişiklik yapıldığında çalışır. Burada sizin değişiklik yaptığınız yer neresidir? K sütunu mu?
 
Katılım
24 Temmuz 2019
Mesajlar
413
Excel Vers. ve Dili
EXCEL 2010 TÜRKÇE
Altın Üyelik Bitiş Tarihi
25-12-2023
Merhaba @tacettinsal öncelikle teşekkür ediyorum. Kodda herhangi bir değişiklik yok. Modülde çalışan ve istedğim sonucu veren kod, Sub Worksheet_Change(ByVal Target As Range) altına yazınca excel kasılıp kalıyor. Onun çözümünü arıyorum.
Zira herhangi bir düğmeye basmadan verinin değişmesi ile birlikte sonuç vermesini istiyorum.
 
Katılım
15 Şubat 2021
Mesajlar
52
Excel Vers. ve Dili
Excel 2016/VBA
Altın Üyelik Bitiş Tarihi
17-02-2022
problemin sebebini şöyle açıklayayım. Worksheet_Change bahsettiğimiz gibi herhangi bir değişiklik olduğunda kod tetiklenir, fakat for next döngüsünde sürekli bir değişiklik meydana geldiği için kod sürekli tetiklenmek istiyor ve çıkmaza giriyor. Bunun için aşağıdaki kodu dener misiniz.
Kod:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 11 Then

On Error Resume Next
Son = Cells(Rows.Count, "K").End(3).Row
For sat = 9 To Son
        For sut = 4 To 10
                    If Cells(sat, "K") = "MUAF" Then

                Cells(sat, sut) = "Yok"
                
            End If
      
 If Cells(sat, "K") = "" Then
Cells(sat, sut).ClearContents
End If

 Next
Next
End If

End Sub
 
Katılım
24 Temmuz 2019
Mesajlar
413
Excel Vers. ve Dili
EXCEL 2010 TÜRKÇE
Altın Üyelik Bitiş Tarihi
25-12-2023
Sayın @tacettinsal kod önerdiğiniz şekilde çalıştı çok teşekkür ederim. Sadece 3-4 saniyelik bir zamanlaması var o kadar. Elinize sağlık
 

veyselemre

Özel Üye
Katılım
9 Mart 2005
Mesajlar
3,646
Excel Vers. ve Dili
Pro Plus 2021
Kod:
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim sat&
    If Target.Column = 11 And Target.Row > 8 Then
        Application.EnableEvents = False
        For sat = 9 To WorksheetFunction.Max(Cells(Rows.Count, "K").End(3).Row, Target.Row)
            If Cells(sat, "K").Value = "MUAF" Then
                Cells(sat, 4).Resize(, 7).Value = "Yok"
            ElseIf Cells(sat, "K").Value = "" Then
                Cells(sat, 4).Resize(, 7).ClearContents
            End If
        Next
        Application.EnableEvents = True
    End If
End Sub
 
Katılım
15 Şubat 2021
Mesajlar
52
Excel Vers. ve Dili
Excel 2016/VBA
Altın Üyelik Bitiş Tarihi
17-02-2022
Kod:
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim sat&
    If Target.Column = 11 And Target.Row > 8 Then
        Application.EnableEvents = False
        For sat = 9 To WorksheetFunction.Max(Cells(Rows.Count, "K").End(3).Row, Target.Row)
            If Cells(sat, "K").Value = "MUAF" Then
                Cells(sat, 4).Resize(, 7).Value = "Yok"
            ElseIf Cells(sat, "K").Value = "" Then
                Cells(sat, 4).Resize(, 7).ClearContents
            End If
        Next
        Application.EnableEvents = True
    End If
End Sub
sayın @veyselemre yazdığınız koddan değerli 2 bilgi öğrenmiş oldum.
1.si "application.enableevents".zaten forumda konusu da varmış.
Apllication.enableevents
2.Resize komutu

Resize ile ilgili bir sorum olacak. For next döngüsüne karşılık olarak resize komutu kodun çalışma hızını etkiler mi?
 
Katılım
24 Temmuz 2019
Mesajlar
413
Excel Vers. ve Dili
EXCEL 2010 TÜRKÇE
Altın Üyelik Bitiş Tarihi
25-12-2023
Sayın @veyselemre ilgi ve desteğiniz için çok teşekkür ederim.
 
Üst