Boş yazan satırı silen makro

AS3434

Özel Üye
Katılım
13 Ocak 2005
Mesajlar
1,820
Excel Vers. ve Dili
M.Office/Excel 2007 Türkçe
Aşağıdaki kodlarla "boş" yazan satırı silmek istiyorum. Nedense bir seferde silmiyor. 2-3 kere butona basmam gerekiyor. Sebebi kodlardaki hatadan mı yoksa benim Excel ayarlarımdan mı kaynaklanıyor? (Bu aralar Excele birşeyler oldu Formül yazıyorum Sonuç yerine formülü hücrede gösteriyor.)

Kod:
Sub sil()
For i = 1 To Range("a65536").End(xlUp).Row
If Cells(i, 1) = "boş" Then
Rows(i).Delete
End If
Next
End Sub
 
Katılım
21 Kasım 2006
Mesajlar
91
Excel Vers. ve Dili
office 2003
Hocam benim bilgisayarda da denedim bende de tek seferde silmedi.
Çok uyduruk bir yöntem oldu ama ben makronun içine bir döngü daha koydum.
senin yerine düğmeye 5 kez basıyor,
başka cevap gelmezse böyle idare et artık:mrgreen:

Sub sil()
For m = 1 To 5
For i = 1 To Range("a65536").End(xlUp).Row
If Cells(i, 1) = "boş" Then
Rows(i).Delete
End If
Next
Next
End Sub
 

Seyit Tiken

Uzman
Uzman
Katılım
23 Ağustos 2005
Mesajlar
4,651
Excel Vers. ve Dili
Excel : 2010
Bu kodu deneyiniz.

Sub Makro2()
[A1:A100].SpecialCells(xlCellTypeBlanks).Delete
End Sub
 
Katılım
4 Nisan 2006
Mesajlar
999
Excel Vers. ve Dili
OFFICE 2021 Türkçe
Sub sill()
For x = Range("a65536").End(xlUp).Row To 1 Step -1
If Cells(x, 1) = "boş" And Cells(x, 1) <> "" Then Rows(x).Delete
Next
End Sub
 

AS3434

Özel Üye
Katılım
13 Ocak 2005
Mesajlar
1,820
Excel Vers. ve Dili
M.Office/Excel 2007 Türkçe
Sn. Seyit Tiken
Verdiğiniz kodu çalıştıramadım. (Makro bilgim zayıf, ne şekilde düzenleyeceğimi bilemedim.)

Sn. mesudiye_052
Kodlar güzel çalışıyor.

Sn. melphisto
Birşey bulamasaydım başvuru yolu verdiğiniz kodlar olacaktı. :)

Hepinize ilginiz için teşekkür ederim.
Sevgilerle.
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
41,591
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Selamlar,

Sn. AS3434,

Dikkat ederseniz sizin kullandığınız kod döngüye birinci satırdan başlayarak devam ediyor.

Kod:
For i = 1 To Range("a65536").End(xlUp).Row
Oysaki bu tür silme işlemlerinde döngü tersten başlamalıdır. Sebebine gelince sizin döngünüzde kullandığınız "i" değişkeni her satır silmede satırları yukarı doğru kaydıracaktır fakat değişken 1 artarak devam edecektir. Bu işlemde kriterlerinize uyan bazı satırların silinmemesine sebep olacaktır. Zaten bu istenmeyen durumuda sorunuzda belirtmişsiniz.

Sn. mesudiye_052 'nin size önerdiği kod sizin ihtiyacınızı karşılayacaktır. Sebebide döngünün son satırdan yukarı doğru çalışmasıdır.

Kod:
For x = Range("a65536").End(xlUp).Row To 1 Step -1
 
Katılım
2 Ocak 2007
Mesajlar
45
Excel Vers. ve Dili
Microsoft Office Excel 2003 Türkce
Sayin AS3434,
Sayin Seyit Tiken`nin verdigi kodlari uyguladim bende oldu.Örnek dosya asagida.
 

AS3434

Özel Üye
Katılım
13 Ocak 2005
Mesajlar
1,820
Excel Vers. ve Dili
M.Office/Excel 2007 Türkçe
Sn. COST_CONTROL
Sitede bulduğum kodlar, bulduğum yerde gayet güzel çalışıyordu.
1To.. Range To.. olayını bilmediğim için Sn. mesudiye_52 nin kodlarıyla farkını bulamamıştım. Sormaya da çekinmiştim. Bundan dolayı ders niteliğindeki detaylı açıklamalarınız için teşekkür ederim.

Ayrıca ilgilenen tüm arkadaşlara tekrar teşekkür ederim.
 
Üst