• DİKKAT

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

Bos Satırlar

  • Konbuyu başlatan Konbuyu başlatan meraklı
  • Başlangıç tarihi Başlangıç tarihi
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:
 
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
 
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
 
Sn Ahmet1982

Linkte verilen 3 dosyayıda inceledinizmi? Eğer incelerseniz farklı çözümleri görebilirsiniz.
 
İ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.
 
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.
 
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.
 
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.
 
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
 
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.
 
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.
 
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:
 
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.
 
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.
 
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.
 
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. :?
 
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]
 
Geri
Üst