For Döngüsü

Tarikkk_

Altın Üye
Katılım
5 Ocak 2020
Mesajlar
407
Excel Vers. ve Dili
Excel 2019
Altın Üyelik Bitiş Tarihi
26-10-2028
Merhabalar. 8. satırdan 10 satıra 1. sütundan 10. sütuna kadar herhangi bir veri varsa A8:O10000 aralığındaki verileri silmek herhangi bir veri yoksa uyarı mesajıyla karşılaşmak için aşağıdaki gibi bir for döngüsü oluşturdum ama bir birde yanlış yapıyorum . sadece 8. satır ilk sütunda veri varsa silme işlemi yapıyor diğer diğer satırlarda veri olduğunda veri boş diyor. nerede yanlış yaptığımı bulamadım. yardımlarınızı bekliyorum. şimdidien çok teşekkürler


Kod:
Sub Veri_Temizleme()
    
        For Satır = 8 To 10
        For Sütun = 1 To 10
        
        If Cells(Satır, Sütun) <> "" Then  'EMANET Yada NAKİT ise
            Range("A8:O10000").ClearContents
            MsgBox "veriler temizlendi"
            Exit Sub
        Else
            MsgBox "veri boş"
            Exit Sub
        End If

        Next Sütun
    Next Satır

End Sub
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,738
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Bahsettiğiniz A8:J10 hücrelerindeki veriler elle mi giriliyor?
 

Necdet

Moderatör
Yönetici
Katılım
4 Haziran 2005
Mesajlar
15,489
Excel Vers. ve Dili
Ofis 365 Türkçe
Merhaba,
Aşağıdaki kod işinizi görür mü?

Kod:
Sub Veri_Sil()

    If Evaluate("counta(A8:J10)") > 0 Then Range("A8:O10000").ClearContents
    
End Sub
 

Tarikkk_

Altın Üye
Katılım
5 Ocak 2020
Mesajlar
407
Excel Vers. ve Dili
Excel 2019
Altın Üyelik Bitiş Tarihi
26-10-2028
Hocam örnek dosya attım for döngüsüne göre şuan 9. satırda veri olduğu için silmesi gerekirken veri boş diyor
 

Ekli dosyalar

Necdet

Moderatör
Yönetici
Katılım
4 Haziran 2005
Mesajlar
15,489
Excel Vers. ve Dili
Ofis 365 Türkçe
Bizim kod işi görmedi mi?

Sizin kodlarınızda mantık hatası var.

1. A8 hücresi dolu ise anca istediğiniz aralığı siler.
2. A8 hücresi boş ise hücre boş deyip çıkıyorsunuz. Diğer hücrelere bakmıyorsunuz.

Eğer benim verdiğim kodları kullanmayıp döngü kullanacaksanız, bir değişken kullanıp hücreler dolu olduğunda bu değişkeni 1 arttırmanız gerek.
Döngü sonunda değişkenin değeri 0 dan büyükse belirttiğiniz aralıkta en az 1 hücre dolu demektir. O zaman silme işlemi yapmanız gerek.
 
Son düzenleme:

Tarikkk_

Altın Üye
Katılım
5 Ocak 2020
Mesajlar
407
Excel Vers. ve Dili
Excel 2019
Altın Üyelik Bitiş Tarihi
26-10-2028
Bizim kod işi görmedi mi?
Hocam sizin kod iş görür tabi ellerinize sağlık ben vba yı yeni öğrendiğim için takıldığım şeyleri merak ediyorum nerde yanlış yaptığımı öğrenmeye çalışıyorum.
 

Necdet

Moderatör
Yönetici
Katılım
4 Haziran 2005
Mesajlar
15,489
Excel Vers. ve Dili
Ofis 365 Türkçe
Tekrar merhaba,

Döngüyü aşağıdaki gibi kullanmalısınız.

Kod:
Sub Veri_Temizleme()
   
    Dim Sat As Integer, _
        Sut As Integer, _
        i   As Integer
       
    For Sat = 8 To 10
        For Sütun = 1 To 10
            If Cells(Sat, Sut) <> "" Then i = i + 1
        Next Sut
    Next Sat
   
    If i > 0 Then Range("A8:O10000").ClearContents
   
End Sub
 

Tarikkk_

Altın Üye
Katılım
5 Ocak 2020
Mesajlar
407
Excel Vers. ve Dili
Excel 2019
Altın Üyelik Bitiş Tarihi
26-10-2028
Bizim kod işi görmedi mi?

Sizin kodlarınızda mantık hatası var.

1. A8 hücresi dolu ise anca istediğiniz aralığı siler.
2. A8 hücresi boş ise hücre boş deyip çıkıyorsunuz. Diğer hücrelere bakmıyorsunuz.

Eğer benim verdiğim kodları kullanmayıp döngü kullanacaksanız, bir değişken kullanıp hücreler dolu olduğunda bu değişkeni 1 arttırmanız gerek.
Döngü sonunda değişkenin değeri 0 dan büyükse belirttiğiniz aralıkta en az 1 hücre dolu demektir. O zaman silme işlemi yapmanız gerek.
şimdi oldu bir yerde eksik yaptığımı biliyordum değişkenmiş :) çok teşekkür ederim.
 
Üst