Boş satırları gizleme makrosu

SSAFFAK

Altın Üye
Katılım
10 Aralık 2020
Mesajlar
81
Excel Vers. ve Dili
2016 ingilizce
Sub Gizle()
For Each t In Range("C9:C85").Cells
If t.Value = "" Then 'boş hücreleri gizler
t.EntireRow.Hidden = True
End If
Next t
End Sub

Sub Göster()
For Each t In Range("C9:C85").Cells
If t.Value = "" Then 'boş hücreleri gösterir
t.EntireRow.Hidden = False
End If
Next t
End Sub




Değerli hocalarım merhabalar; yukarıdaki formülü kendime uyarladım.
Fakat 2 adet sorum olacak
1- Bu formülü butona değil de sayfayı açtığımda direk makro çalışmasını nasıl sağlayabiliriz.
2- Dolu satırın altındaki boş satıra veri girildiğinde onun altında gizlenen satırlardan 1 satır açılmasını sağlayabilir miyiz.
(Yani C8 satırına veri girildiğinde C9 dan bir satır açsın, C9 a veri girildiğinde C10 satırını açsın gibi)
 

Ömer

Moderatör
Yönetici
Katılım
18 Ağustos 2007
Mesajlar
21,186
Excel Vers. ve Dili
2016-Türkçe
Merhaba,

2 adet kod vermişsiniz. Hangisi sayfayı açınca çalışacak? Yapmak istediğiniz anlaşılmıyor.
2. sorunuzun da mantığı net değil. Örnek dosya ekleyiniz.
 

SSAFFAK

Altın Üye
Katılım
10 Aralık 2020
Mesajlar
81
Excel Vers. ve Dili
2016 ingilizce
Saygıdeğer Ömer hocam aslında "LİSTE" sayfasında toogle buton yapmaya çalıştım ama yapamadım ondan dolayı ilk kod (boş satırları gizle) çalışsın istedim. Aslında toogle buton işimizi daha çok kolaylaştıracak.
2. Sorumun mantığı listedeki boş alanlar yer kaplamasın. Yani print almaya çalıştığımızda ve liste de görünüm kolaylığı sağlaması amacından dolayı
dolu satırların altında 1 adet boş satır kalacak. Bu boş satıra yeni veri girildiğinde otomatik altında yeni bir boş satır açsın. Bu döngü 50 kişiye kadar gidecek. Hocam tam olarak anlatabildimmi bilemedim ama kısaca amacım şu 50 kişilik listede 20 kişi varsa boşuna 50 kişilik liste görünmesin.
Dolu olan 20 kişilik bölümü görünsün, boş olan 30 kişilik alan gizli kalsın.
 

Ekli dosyalar

Ömer

Moderatör
Yönetici
Katılım
18 Ağustos 2007
Mesajlar
21,186
Excel Vers. ve Dili
2016-Türkçe
Liste sayfasına ToggleButton ekleyiniz.
Aşağıdaki kodları Liste sayfasının kod bölümüne ekleyiniz. Gizle-Göster yanında, C sütununa veri girdiğinizde boş satır açılacaktır.
Kod:
Private Sub ToggleButton1_Click()
    Dim alan As Range, son As Integer
    Set alan = Range("C8:C57")
    son = Cells(58, "C").End(xlUp).Row + 1
    If son < 8 Then son = 8
    With ToggleButton1
        If .Value Then
            alan.SpecialCells(xlCellTypeBlanks).EntireRow.Hidden = True
            Rows(son).EntireRow.Hidden = False
            .Caption = "Göster"
        Else
            alan.SpecialCells(xlCellTypeBlanks).EntireRow.Hidden = False
            .Caption = "Gizle"
        End If
    End With
End Sub

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim son As Integer
    If Intersect(Target, Range("C8:C57")) Is Nothing Then Exit Sub
    If Target.Count > 1 Then Exit Sub
    son = Cells(58, "C").End(xlUp).Row + 1
    Rows(son).EntireRow.Hidden = False
End Sub
 

Ekli dosyalar

SSAFFAK

Altın Üye
Katılım
10 Aralık 2020
Mesajlar
81
Excel Vers. ve Dili
2016 ingilizce
Hocam varolun elleriniz dert görmesin. Hocam bana bayram hediyesi vermiş gibi oldunuz. Allah razı olsun..
Ömer hocam son bir sorum olacak bu yaptığımız işi diğer "mesailer" sayfası hariç "kapak", "gece nöbet sayısı" ve "fazla mesai" sayfalarına da entegre etmek için nasıl bir yol izlemem lazım.
Hocam bilgileriniz gerçekten altın değerinde ne yapsak hakkınızı ödeyemeyiz.
 

Ömer

Moderatör
Yönetici
Katılım
18 Ağustos 2007
Mesajlar
21,186
Excel Vers. ve Dili
2016-Türkçe
Önemli değil. Allah hepimizden razı olsun.

Eki inceleyiniz.
Bahsettiğiniz sayfalar "Liste" sayfasından formül ile veri alıp dolduğu için, bu sayfalar aktif olduğunda kodu tetikleme daha doğru olacağını düşündüğüm için o şekilde yaptım.
Module2 ve BuÇalışmaKitabı sayfalarına kodlar eklenmiştir.

.
 

Ekli dosyalar

SSAFFAK

Altın Üye
Katılım
10 Aralık 2020
Mesajlar
81
Excel Vers. ve Dili
2016 ingilizce
Ömer hocam Allah razı olsun süpersiniz hakkaten. Elinize emeğinize yüreğinize sağlık.
Hepinizden Allah razı olsun.
 

SSAFFAK

Altın Üye
Katılım
10 Aralık 2020
Mesajlar
81
Excel Vers. ve Dili
2016 ingilizce
Hocam merhaba; 50 kişilik "LİSTE" ye 50. kişiyi kaydedince bağlı bulunduğu diğer sayfaları açarken "Run-time error 91" hatası veriyor.
 

Ömer

Moderatör
Yönetici
Katılım
18 Ağustos 2007
Mesajlar
21,186
Excel Vers. ve Dili
2016-Türkçe
Module2 deki;

c.EntireRow.Hidden = True

yerine aşağıdaki satırları yazarak deneyiniz.

If Not c Is Nothing Then
c.EntireRow.Hidden = True
End If

Dosya ektedir.

.
 

Ekli dosyalar

Üst