• DİKKAT

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

Koşullu Sutün gizleme

Katılım
23 Nisan 2012
Mesajlar
24
Excel Vers. ve Dili
türkçe
yapmış olduğum deneme çalışmasında ayları seçmesini ve seçilen ayda 30 veya 31 yoksa o sutunun gözükmemesini gizlenmesini istiyorum.

yardımcı olabilirseniz sevinirim.
 

Ekli dosyalar

Çözüm için aşağıdaki işlemleri sırasıyla uygulayınız:

C4 hücresine aşağıdaki formülü yazınız:

Kod:
=(1&" "&C3)*1

C4 hücresinin biçimini isteğe uyarlanmıştan gg olarak ayarlayınız.

D4 hücresine aşağıdaki formülü yazınız ve AG4 hücresine kadar kopyalayınız:

Kod:
=EĞER(C4="";"";EĞER(AY(C4+1)=AY(C4);C4+1;""))

Aşağıdaki kodları ilgili sayfanın kod bölümüne yapıştırınız:

Kod:
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, [c3]) Is Nothing Then Exit Sub
For i = 31 To 33
If Cells(4, i) = "" Then
    Columns(i).EntireColumn.Hidden = True
Else
    Columns(i).EntireColumn.Hidden = False
End If
Next
End Sub

Bunları yaptıktan sonra ay seçimini her yaptığınızda gizleme ve gösterme otomatik yapılacaktır.
 
Merhaba;
Syn. YUSUF44 çözümü göstermiş ama hazırladığım dosya Alternatif olsun.
İyi çalışmalar.
 

Ekli dosyalar

çok teşekkür ederim emeğinize sağlık tam istediğim gibi olmuş
 
peki ben makro kodlarını diğer sayfada uygulamak istesem; aynısını diyelim ki bi sayfa daha açıp orda kullanmak istiyorum. Kodda ne gibi değişiklikler yapmam gerekir.
 
Bu kodları hangi sayfanın kod bölümüne kopyalarsanız o sayfada belirtilen işlemi yapar. Ancak doğru çalışması için sayfa yapısı aynı olmalıdır. Çünkü kod C3 hücresi yani ay hücresi değiştikçe çalışmak üzere ayarlandı.

C3 hücresi her değiştiğinde 4. satırda 31, 32 ve 33. sütunları (yani AE4, AF4 VE AG4 hücrelerini) kontrol eder, hücre boşsa gizler, değilse gösterir.

Koddaki C3 kısmı hangi hücre değiştiğinde çalışacağını gösteriyor.
31 to 33 ise hangi sütunlarda çalışacağını gösteriyor.
(i,4) kısmı 4. satırda çalıştırıyor.
 
Yusuf hocam sizin söylediklerinizi gayet iyi anladım. Bir iki deneme yanılma ile farklı uygulamalarda yaptım. Makro konusunda yeni yeni bilgi sahibi oluyorum.

Şimdi sıkıntı şu. c3 hücresi değilde örneğin sayfa2 de a1 hücresine =puantaj!C3 yazarak çağırıyorum. sayfa 2 de kullandığım makroda c3 yerine a1 yazdığımda işlem yapmıyor.

Aynı şeyi puantaj sayfasında c3 değilde d19 denedim. makroda değişeni d19 gösterdim yine olmadı
 
muygun bey sizin verdiğiniz örnekte çok güzel, olayı anlamamda çok faydası oldu ve farklı bir uygulama olarak kayıtlarıma aldım, teşekkürler
 
Yusuf hocam sizin söylediklerinizi gayet iyi anladım. Bir iki deneme yanılma ile farklı uygulamalarda yaptım. Makro konusunda yeni yeni bilgi sahibi oluyorum.

Şimdi sıkıntı şu. c3 hücresi değilde örneğin sayfa2 de a1 hücresine =puantaj!C3 yazarak çağırıyorum. sayfa 2 de kullandığım makroda c3 yerine a1 yazdığımda işlem yapmıyor.

Aynı şeyi puantaj sayfasında c3 değilde d19 denedim. makroda değişeni d19 gösterdim yine olmadı

Verdiğim makro sayfa olaylarına bağlıdır. Sanıyorum bu tür makrolar sayfadaki formülle olan değişikliklerde çalışmıyor, manuel ya da makroyla olan değişikler sayfa olayı olarak bu makronun çalışmasını sağlıyor.

Siz bir yerden değiştirip tüm sayfalarda çalışmasını istiyorsanız makroda farklı çözümler düzenlenebilir.
 
Örneğin verdiğim kodda End sub satırından önce aşağıdaki kodu eklerseniz Sayfa 2'deki C3 hücresi de makroyla değişecek ve bu sayfadaki kodlar tetiklenerek istediğiniz gibi gizle/göster yapacaktır. (Bu kodu denerken puantaj sayfasını kopyaladım ve adını Sayfa 2 olarak değiştirdim)

Kod:
Sheets("Sayfa 2").[c3] = [c3]

Sonuç olarak puantaj sayfasındaki kodlar şu hale geldi:

Kod:
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, [c3]) Is Nothing Then Exit Sub
For i = 31 To 33
If Cells(4, i) = "" Then
    Columns(i).EntireColumn.Hidden = True
Else
    Columns(i).EntireColumn.Hidden = False
End If
Next
[B][COLOR="Red"]Sheets("Sayfa 2").[c3] = [c3]
[/COLOR][/B]End Sub

Sayfa 2'deki kodlar ise eskisi gibi kaldı:

Kod:
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, [c3]) Is Nothing Then Exit Sub
For i = 31 To 33
If Cells(4, i) = "" Then
    Columns(i).EntireColumn.Hidden = True
Else
    Columns(i).EntireColumn.Hidden = False
End If
Next

End Sub

Puantaj sayfasında C3 hücresi her değiştiğinde hem puantaj hem de Sayfa 2'de istenen işlem gerçekleşiyor. Kod deryasında farklı çözümler de bulunabilir.
 
Geri
Üst