2014-05-09 40 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

非常感谢。您的两个建议都完美无缺。 –