Bos Satırlar

Katılım
3 Mart 2005
Mesajlar
12
Merhaba Excel Ailesi
Kısa bir sorum
Excelde uzun bir listem var aralarda boş olan satırları gizlemek için nasıl
bir makro yazılabilir :kafa:
 
Katılım
2 Mart 2005
Mesajlar
225
Excel Vers. ve Dili
2003
2007
2010
Alternatif :
Kod:
Sub Gizle()
For satir = 1 To 50 '50 rakamı son satırın değeridir.
    If Cells(satir, 1) = Empty Then
        Rows(satir & ":" & satir).EntireRow.Hidden = True
    End If
Next satir
End Sub
Sub Goster()
For satir = 1 To 50 '50 rakamı son satırın değeridir.
        Rows(satir & ":" & satir).EntireRow.Hidden = False
Next satir
End Sub
 
Katılım
6 Mart 2005
Mesajlar
26
Döngü ile satır gizlemek yavaş bir çözümdür. Bunu deneyiniz.

Mesela A sütunundki boş satırlar için.

Sub Gizle()
Columns("A:A").SpecialCells(xlCellTypeBlanks).EntireRow.Hidden = 1
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
Sn Ahmet1982

Linkte verilen 3 dosyayıda inceledinizmi? Eğer incelerseniz farklı çözümleri görebilirsiniz.
 
Katılım
6 Mart 2005
Mesajlar
26
İnceledim ve size ufak bir sorum olacaktı, mümkünse cevaplarmısınız. İlginize teşekkür eder, başarılarınızın devamını dilerim.
 
X

xxrt

Misafir
Döngü ile satır gizlemek yavaş bir çözümdür. Bunu deneyiniz.

Mesela A sütunundki boş satırlar için.

Sub Gizle()
Columns("A:A").SpecialCells(xlCellTypeBlanks).EntireRow.Hidden = 1
End Sub
Döngü ile 50 satıra kadar arama yapıyor ve boş olanları gizliyor.Hepsi boş olsa bile.
Sizin kodda ise hiç veri olmadığı takdirde hata alıyor.Ancak veri olupta boş satırları makronuz ile boş satırları gizliyor.Daha sonra tüm verileri silip tekrar denediğiniz;
Makronun ilk çalıştığında yaptığı işlerin aralığı kadar işleme tabi tutuyor.
Bu Her iki halde duruma göre kullanılabiliyor.
Yani Kodların yavaşlatma Mb gibi önemli özellikleri küçük çalışmalarda ve işi gören çalışmalarda ne kadar önemli olabilirki.,
Ben kodunuzu denediğim için bu tür düşündüm.
 
Katılım
6 Mart 2005
Mesajlar
26
Hiç dolu satır yokken boş satır gizlemek isteyen varsa kodlara

Sub Gizle()
On Error Resume Next
Columns("A:A").SpecialCells(xlCellTypeBlanks).EntireRow.Hidden = 1
End Sub

Eklemek kadar basit bir çözümü vardır. Ben denedim 50 satır döngü ile 5 sn. bu kod ile 1 sn. sürüyor, artık siz seçiminizi yapın.
 
Katılım
29 Eylül 2004
Mesajlar
1,810
Excel Vers. ve Dili
Excel 2002 TR
Peki işlemden önce yeni bir sayfa eklendi ise ve kod ile bu sayfaya henüz bir giriş yapılamadı ise, yani usedrange boş iken veya kod ile boşalttığında hata kontrolünüz hala işe yararmı? Ben denedim bu hali ile işe yaramıyor.
 
Katılım
6 Mart 2005
Mesajlar
26
Yani illede hiç dolu satır yokken mi boş satırları gizelemek istiyorsunuz, biraz ters bir mantık ama olsun illede olsun derseniz;

Kod:
Sub Gizle()
On Error GoTo eror
Columns("A:A").SpecialCells(xlCellTypeBlanks).EntireRow.Hidden = 1
eror:
Rows("1:65536").Hidden = 1
End Sub
 
Katılım
29 Eylül 2004
Mesajlar
1,810
Excel Vers. ve Dili
Excel 2002 TR
http://www.excel.web.tr/viewtopic.php?t=2912

Bu linkteki eleştirilerinizi hatırlatırım. Gördüğünüz gibi soru soranın amacını ve ne yapmak istediğini bilmediğiniz müddetce yazdığınız kodların hiç kimseye bir faydası, hiç bir anlamı olmuyor. Adım adım ilerlemek gerekiyor bazen amaç yardım etmekse, (yani üzüm yemekse) ve vakit ayırmak gerekiyor soru soranları anlamak, anlayabileceği şekilde yardımcı olabilmek için, bunu yaparkende tüm alternatif görüşlere açığım soruyu sorana bir faydası dokunacak şekilde bir sunum yapıldı ise.

Dünyanın en iyi kod yazarı olduğumuzu ispatlamak gibi kompleksli bir ruh halinde olmadığımız için buradaki misyonumuz böyle saçma bir şeyi ispata çalışmak değil tamamen karşılıksız olarak İnsan gibi insanlara birazcık olsun fayda sağlamak. Almadan vermeyi unutmuş bazı insanların bunu çok zor algıladığını anlayabiliyorum, ama inanın bir teşekkür bana yetiyor.
 
Katılım
29 Eylül 2004
Mesajlar
1,810
Excel Vers. ve Dili
Excel 2002 TR
Ahmet1982,
Yani illede hiç dolu satır yokken mi boş satırları gizelemek istiyorsunuz, biraz ters bir mantık ama olsun illede olsun derseniz;
Neden ters mantık onuda anlayamadım. Aynı döngüde 8-10 yeni Sayfa Add ediyorum ve veritabanımdan yaptığım sınama sonucu hangi sayfaya birşey yazdırılıp yazdırılmadığını kendi kodlarımın içinden kontrol etmek daha zahmetli olduğu için her halikarda boş satırları kapatmak istiyorum eklediğim sayfalarda.
 
Katılım
6 Mart 2005
Mesajlar
26
ama inanın bir teşekkür bana yetiyor.
Ellerinize sağlık teşekkür ederim.

Cevabımı deneyin bakalım olacak mı?
kontrol etmek daha zahmetli olduğu için her halikarda boş satırları kapatmak istiyorum eklediğim sayfalarda. :hey:
 
Katılım
29 Eylül 2004
Mesajlar
1,810
Excel Vers. ve Dili
Excel 2002 TR
Anlaşıldı, sizin soruyu okumamak ve asıl konuyu kaçırmak gibi bir özelliğiniz var. :D Ben bunu yaşınıza bağlayıp hoş karşılıyorum. :D . Yaptığınız katkılar içinde teşekkürler ayrıca. Burası farketmiş olacağınız gibi çok demokratik bir ortam.
 
Katılım
23 Şubat 2005
Mesajlar
14
formül içerip de değeri 0 olan hücreleri gizlemiyor. Bunu engellemek için ne yapılabilir. Yani değer olarak boş olan hücreleri gizlesin.Teşekkürler.
 

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
Araçlar-seçenekler-görünüm penceresinde "sıfır değerleri" kutusundaki işareti kaldırırsanız sıfır olan değerler görünmez.
 
Katılım
23 Şubat 2005
Mesajlar
14
Sub Gizle()
Columns("A:A").SpecialCells(xlCellTypeBlanks).EntireRow.Hidden = 1
End Sub
Yanlış anlaşıldığımı düşünüyorum. Demek istediğim yukarıdaki makronun A sütunudaki tamamen boş hücreleri bulup ona ait satırları gizlemesi.Mesela A1 hücresinde =Sayfa1!C15 gibi bir formül var ve değeri 0 ve görünmüyor. Bu hücrenin ait olduğu satır gizlenmiyor. Benim istediğim değer olarak 0 olan hücrelere ait satırların gizlenmesi. Ã?ncekinde yanlışlıkla "hücrelerin gizlenmesi" diye yazmışım. Bundan dolayı yanlış anlaşıldım heralde. Yardımcı olduğunuz için teşekkürler. :?
 

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
Aşağıdaki kodu deneyin.
[vb:1:2fd8e52a06]Sub Gizle()
For Each hücre In Range("A1:A" & Cells(65536, 1).End(xlUp))
If hücre.Value = 0 Or hücre.Value = "" Then
Rows(hücre.Row).EntireRow.Hidden = True
End If
Next hücre
End Sub
[/vb:1:2fd8e52a06]
 
Üst