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.
 

veyselemre

Özel Üye
Katılım
9 Mart 2005
Mesajlar
3,646
Excel Vers. ve Dili
Pro Plus 2021
[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]
 

Kemal Demir

Özel Üye
Katılım
29 Temmuz 2004
Mesajlar
2,108
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?
 

Ali

Uzman
Katılım
21 Temmuz 2005
Mesajlar
7,897
Excel Vers. ve Dili
İş:Excel 2016-Türkçe
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
 

Levent Menteşoğlu

Administrator
Yönetici
Admin
Katılım
13 Ekim 2004
Mesajlar
16,057
Excel Vers. ve Dili
Excel 2010-32 bit-Türkçe
Excel 365 -32 bit-Türkçe
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.
 
Katılım
7 Şubat 2006
Mesajlar
9
Excel Vers. ve Dili
excel 2002
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 ?
 

Kemal Demir

Özel Üye
Katılım
29 Temmuz 2004
Mesajlar
2,108
Zannedersem Burada Hepiniz Haklısınız.
Hepinize Teker Teker Teşekkur Ederim.
İyi Hafta Sonları.
 
Üst