2014-05-09 88 views
0

我想在Excel 2010中使用VBA來隱藏基於名稱的列。我的每個列都有一個產品版本和其下的一些結果。產品版本在整個電子表格中都會重複使用,因爲我已按操作系統對其進行了分類。因此,我隱藏了多個基於選擇的列,就像過濾器一樣。如果我可以根據名稱而不是列字母(A,B,C,...)進行隱藏,那麼在未來添加列會阻止更多的代碼更改這些列的位置。如何在Excel 2010中隱藏基於名稱的列?

我目前正在做的事情是固定在列字母上。這限制了我的意思,即我不能在無需更改代碼(列字母)的情況下添加列。例:

`If productver_2dot5.Value = True Then 
    Columns("E").Hidden = False 
    Columns("M").Hidden = False 
    Columns("AC").Hidden = False 
    Columns("AT").Hidden = False 
    Columns("BD").Hidden = False 
    Columns("BR").Hidden = False 
Else 
    Columns("E").Hidden = True 
    Columns("M").Hidden = True 
    Columns("AC").Hidden = True 
    Columns("AT").Hidden = True 
    Columns("BD").Hidden = True 
    Columns("BR").Hidden = True 
End If` 

我想這樣做是爲了隱藏包含名稱爲「產品版本2" 的列(例如)在其細胞中的一個

回答

1
Sub HideBlahs() 
    Dim col As Range 
    For Each col In ActiveSheet.UsedRange.Columns 
     If Application.CountIf(col, "blah") > 0 Then 
      col.EntireColumn.Hidden = True 
     End If 
    Next col 
End Sub 

FYI您發佈的代碼減少到:

Range("E1,M1,AC1,AT1,BD1,BR1").EntireColumn.Hidden = Not productver_2dot5.Value 
+0

非常感謝。您的兩個建議都完美無缺。 –