• DİKKAT

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

Sil Kodu neden İstediğim gibi çalışmıyor.?

Kemal Demir

Özel Üye
Katılım
29 Temmuz 2004
Mesajlar
2,108
Arkadaslar hepinize iyi gunler.

Sub SİL()
For x = 2 To 20
If Cells(x, 2).Value = "0" Then
Else
Rows(x).Delete
'Selection.Delete Shift:=xlUp
End If
Next
End Sub

Yukarıdaki kod'da B kolounda 0 değeri olmayan satırları silmeye yarayacak bir kod hazırladım ama bir seferde silmiyor ancak bunu 2 defa ve 3 defa calısıtırsan oluyor ki bu data 2 satırlık değil yaklasık 5000 civarı
bunu bir kaç defa yaparsam baya uzun zaman alacak

Bunu tek seferde silmesi için koddaki hatam nerede ?

İyi Çalışmalar.

Dosya Ek'tedir.
 
[vb:1:4aaac2871f]Sub SİL()
For x = [b65526].End(3).Row To 2 Step -1
If Cells(x, 2).Value = "0" Then Rows(x).Delete
Next
End Sub[/vb:1:4aaac2871f]
 
Sn.VeyselEmre

Öncelikle Cevabınız Çok İşime Yaradı Birşey sormak istiyorum

[vb:1:fa6587649d]Sub SİL()
For x = 2 To 20
If Cells(x, 2).Value = "0" Then
Else
Rows(x).Delete
End If
Next
End Sub [/vb:1:fa6587649d]

Bu Kod istenildiği gibi neden Çalışmıyor Acaba?
 
0 değeri olmayan satırları silmeye yarayacak bir kod

Bu durumda Sn veyselemre, kodlarını aşağıdaki gibi kullanabilirsiniz

Sub SİL()
For x = [b65526].End(3).Row To 2 Step -1
If Cells(x, 2).Value <>0 Then Rows(x).Delete
Next
End Sub
 
Bu Kod istenildiği gibi neden Çalışmıyor Acaba?
Sn Rakkas

Eğer bir döngü içinde satır silme işlemini yukarıdan başlatırsanız, her silinen satırdan bir sonraki satırın üste kayması sebebi ile döngüde hata oluşur. Örneğin 2.satırı sildiniz diyelim, bu durumda 2.satır yerine 3. satır , 3.satır yerinede 4.satır geçer, döngüde 3. satır olarak haliyle bir yukarı kaymış olan 4. satırdan devam eder. Bu durum her siline satırdan sonra artarak devam eder. Bu sebeple bu tür silme işlemlerine en alt satırdan yukarı doğru başlanır.
 
Rakkas' Alıntı:
Sn.VeyselEmre

Öncelikle Cevabınız Çok İşime Yaradı Birşey sormak istiyorum

[vb:1:c161ae41d0]Sub SİL()
For x = 2 To 20
If Cells(x, 2).Value = "0" Then
Else
Rows(x).Delete
End If
Next
End Sub [/vb:1:c161ae41d0]

Bu Kod istenildiği gibi neden Çalışmıyor Acaba?

Sn Rakkas ;
Kanımca For - Next döngüsü içinde row silme işlemi yapıyorsunuz.
Silme işlemi yapıldığında sildiğiniz hücrelerin altındaki satırların hepsi bir yukarı çıkarken döngü değeriniz de 1 değer arttığında her silme işlemi yapıldığında 2 satır silme komutunu görmüyor diye düşünüyorum bilmem doğru anlatabildim mi ?
 
Zannedersem Burada Hepiniz Haklısınız.
Hepinize Teker Teker Teşekkur Ederim.
İyi Hafta Sonları.
 
Geri
Üst