Satır Gizle Göster

Katılım
25 Nisan 2007
Mesajlar
442
Excel Vers. ve Dili
Office 2010
Arkadaşlar aşağıdaki gibi bir makrom var ama çalıştıramadım;

Kod:
Sub gizle()
If Range("A1") = 1 Then
Range("A33:A79").EntireRow.Hidden = False
Range("A80:A127").EntireRow.Hidden = True
Range("A128:A175").EntireRow.Hidden = True
Range("A176:A223").EntireRow.Hidden = True
If Range("A1") = 2 Then
Range("A33:A79").EntireRow.Hidden = True
Range("A80:A127").EntireRow.Hidden = False
Range("A128:A175").EntireRow.Hidden = True
Range("A176:A223").EntireRow.Hidden = True
If Range("A1") = 3 Then
Range("A33:A79").EntireRow.Hidden = True
Range("A80:A127").EntireRow.Hidden = True
Range("A128:A175").EntireRow.Hidden = False
Range("A176:A223").EntireRow.Hidden = True
If Range("A1") = 4 Then
Range("A33:A79").EntireRow.Hidden = True
Range("A80:A127").EntireRow.Hidden = True
Range("A128:A175").EntireRow.Hidden = True
Range("A176:A223").EntireRow.Hidden = False
End Sub
makroda da yapmak istediğim gibi A1 hücresinin aldığı değere göre belirli satırların gizlenmesini gösterilmesini istiyorum. Teşekkürler.
 
Katılım
15 Haziran 2006
Mesajlar
3,704
Excel Vers. ve Dili
Excel 2003, 2007, 2010 (TR)
Kodlarınız, bu şekliyle derlenmez bile ... Çünkü, aldığınız hata mesajında, mutlaka; "End If" olmadan "If" blok'u kullandığınız söylenmektedir. Yani "If" ile başladığınız bir paragrafa (yapıya) nokta (yani End If) koymamışsınız.

Kendi kodunuzu kullanmaya devam etmek isterseni aşağıdaki gibi revize edin.

Kod:
Sub gizle()
    If Range("A1") = 1 Then
        Range("A33:A79").EntireRow.Hidden = False
        Range("A80:A127").EntireRow.Hidden = True
        Range("A128:A175").EntireRow.Hidden = True
        Range("A176:A223").EntireRow.Hidden = True
    ElseIf Range("A1") = 2 Then
        Range("A33:A79").EntireRow.Hidden = True
        Range("A80:A127").EntireRow.Hidden = False
        Range("A128:A175").EntireRow.Hidden = True
        Range("A176:A223").EntireRow.Hidden = True
    ElseIf Range("A1") = 3 Then
        Range("A33:A79").EntireRow.Hidden = True
        Range("A80:A127").EntireRow.Hidden = True
        Range("A128:A175").EntireRow.Hidden = False
        Range("A176:A223").EntireRow.Hidden = True
    ElseIf Range("A1") = 4 Then
        Range("A33:A79").EntireRow.Hidden = True
        Range("A80:A127").EntireRow.Hidden = True
        Range("A128:A175").EntireRow.Hidden = True
        Range("A176:A223").EntireRow.Hidden = False
    End If
End Sub
Alternatif olarak, Select Case yapısı da kullanılabilir. Bu örnekteki, ayrık aralık seçimlerine dikkat edin.

Kod:
Sub Gizleme_Alternatif()
    Select Case Range("A1")
        Case 1
            Range("A33:A79").EntireRow.Hidden = False
            Range("A80:A127,A128:A175,A176:A223").EntireRow.Hidden = True
        Case 2
            Range("A80:A127").EntireRow.Hidden = False
            Range("A33:A79,A128:A175,A176:A223").EntireRow.Hidden = True
        Case 3
            Range("A128:A175").EntireRow.Hidden = False
            Range("A33:A79,A80:A127,A176:A223").EntireRow.Hidden = True
        
        Case 4
            Range("A176:A223").EntireRow.Hidden = False
            Range("A33:A79,A80:A127,A128:A175").EntireRow.Hidden = True
    End Select
End Sub
 
Katılım
25 Nisan 2007
Mesajlar
442
Excel Vers. ve Dili
Office 2010
Ferhat bey çok teşekkürler,

peki bu makronun bir "açılan kutu"da değişiklik yapıldığında çalışmasını sağlayabilir miyiz? ya da bir sayfa seçildiğinde de??
 
Katılım
15 Haziran 2006
Mesajlar
3,704
Excel Vers. ve Dili
Excel 2003, 2007, 2010 (TR)
Tabi ki, olabilir. "Açılan Kutu" için; direkt olarak "Makro Ata" komutunu kullanarak, çıkan listeden bu makroyu seçebilirsiniz. Ama, "Açılan Kutu"nun "Hücre Bağlantısı"nı A1 olarak değiştirin veya kodlardaki A1 referansı "Hücre Bağlantısı" referansı ile değiştirin.

Sayfa seçildiğinde çalışma için; aşağıdaki gibi bir olay prosedürünün içinden, bu kod çağrılabilir.

Kod:
Private Sub Worksheet_Activate()
Call Gizle
End Sub
 
Katılım
25 Nisan 2007
Mesajlar
442
Excel Vers. ve Dili
Office 2010
"açılan kutu" farklı bir sayfada. sanırım onun için çalışmıyor...

açılan kutu yerine makrodaki A1 hücresi her değiştiğinde makronun otomatik çalışmasını sağlayabilir miyiz?
 
Katılım
15 Haziran 2006
Mesajlar
3,704
Excel Vers. ve Dili
Excel 2003, 2007, 2010 (TR)
Örneğin; "Açılan Kutu"nuz Sayfa1'de ve Gizlenip/Gösterilecek satırlar Sayfa2'de ise; kodu şu şekilde revize etttikten sonra, "Açılan Kutu"ya bağlamalısınız.

Bu kodlara dikkat ederrseniz, "Range" ifadelerinin önünde, o "Range"nin hangi sayfaya ait olduğu belirtilmektedir.

Kod:
Sub Gizleme_Alternatif()
    With Sheets("Sayfa2")
        Select Case Sheets("Sayfa1").Range("A1")
            Case 1
                .Range("A33:A79").EntireRow.Hidden = False
                .Range("A80:A127,A128:A175,A176:A223").EntireRow.Hidden = True
            Case 2
                .Range("A80:A127").EntireRow.Hidden = False
                .Range("A33:A79,A128:A175,A176:A223").EntireRow.Hidden = True
            Case 3
                .Range("A128:A175").EntireRow.Hidden = False
                .Range("A33:A79,A80:A127,A176:A223").EntireRow.Hidden = True
            
            Case 4
                .Range("A176:A223").EntireRow.Hidden = False
                .Range("A33:A79,A80:A127,A128:A175").EntireRow.Hidden = True
        End Select
    End With
End Sub
 
Katılım
25 Nisan 2007
Mesajlar
442
Excel Vers. ve Dili
Office 2010
Ferhat Bey çok teşekkürler elinize sağlık...
 
Üst