2016-03-29 25 views
0

Binlerce veya satırda inanılmaz derecede büyük yüzlerce sütun içeren bir e-tablo var, hangi sütunların görüntüleneceğini belirlemek için kutuları işaretleme olanağına sahibim. Sorun şu ki, bir sütunun değerine göre sütunları her sütunun en üstüne doğru sıralamak istiyorum (Satır 10). Bu, kategorinin dinamik olmasını sağlar ve bir öğenin bir kategoriden diğerine geçmesine izin verir ve bu kategori için onay kutusu durumuna göre gizlenir veya görüntülenir.Excel dinamik makroları kullanarak sütunları filtreleme/gizleme

Onay kutusunun her takım için gizli ve görünür arasında geçiş yapmasına izin vermek için şu anda makroda sahip olduğum kod aşağıda. şu anda 20 kişilik gruplar halinde gruplandırılmış, her 20 statik gruplama ortadan kaldırmak ve bu örnekte kimin hücre satırda 10 kategori içeren sütunların dizisi (Şu anda "Takım 1" ile değiştirmek istiyorum.

Sub Team1() 
Set target = Range("B1") 
If target.Value = "TRUE" Or target.Value = "True" Then 
    ActiveSheet.Columns("F:Y").EntireColumn.Hidden = False 
ElseIf target.Value = "FALSE" Or target.Value = "False" Then 
    ActiveSheet.Columns("F:Y").EntireColumn.Hidden = True 
End If 
End Sub 

cevap

1

Row 10 değeri her Sütun kontrol etmek için bir For döngü kullanabilir, daha sonra buna göre entireColumn arasında .hidden özelliğini ayarlamak.

Sub Team1() 
    Dim target As Range 
    Dim checkCell As Range 

    Set target = Range("B1") 

    For Each checkCell In Range("F10:Y10").Cells 
     checkCell.EntireColumn.Hidden = (LCase(target.Value) = "true" And checkCell.Value = "Team 1") 
    Next checkCell 

End Sub 

rangeF10:Y10 her cell boyunca For Each döngü şekilde döngü

.Hidden'un true/false ataması olduğundan IF... Then'a gerek yoktur. (LCase(target.Value) = "true" And checkCell.Value = "Team 1") bit, bu iki koşulu bağlı olarak True veya False döndürür.

+0

Birden çok farklı Ekiplerim olduğu için bu düzgün çalışmıyor, örneğiniz yalnızca bir tane açıp kapatmaya çalışıyor ancak şimdi 2 veya daha fazla ekiple birleştirildiğinde çalışacak. İlk yazımda yeterince açıklamamış olabilirim, ancak takımlar 3,5,8'i seçebilmem için 10 takım olduğunu ve sadece 3'ü görebildiğimi söyleyeyim. Bu, başka ifadelerin sebebi de buydu. – NotJDoe

İlgili konular