• DİKKAT

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

For Döngüsü

Tarikkk_

Altın Üye
Katılım
5 Ocak 2020
Mesajlar
407
Excel Vers. ve Dili
Excel 2019
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
 
Bahsettiğiniz A8:J10 hücrelerindeki veriler elle mi giriliyor?
 
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
 
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

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:
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
 
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.
 
Geri
Üst