• DİKKAT

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

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.
 
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
 
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??
 
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
 
"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?
 
Ö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
 
Ferhat Bey çok teşekkürler elinize sağlık...
 
Geri
Üst