在Excel中显示/隐藏基于下拉select的列

我试图根据我的下拉列表中的选项显示一个隐藏的列。 对于单行它工作正常,但是当我想扩展我的范围10行

If Range("$CF$5: $CF$15") = "Others" Then

Tt显示Runtime error 13.

以下是我的代码。 谢谢你的协助。

 If Range("$CF$5") = "Others" Then ActiveSheet.Columns("CG").EntireColumn.Hidden = False Else ActiveSheet.Columns("CG").EntireColumn.Hidden = True End If 

你不能比较范围内的值,就像你正在做的那样。

If Range("$CF$5: $CF$15") = "Others"

有很多方法可以做比较。 循环范围是最常用的方法。 以下是另一种检查垂直范围内的所有单元格是否具有相同值的方法。

这是你正在尝试?

 Sub Sample() Dim ws As Worksheet Dim rng As Range '~~> Set your worksheet here Set ws = ThisWorkbook.Sheets("Sheet1") With ws '~~> Set your range here Set rng = .Range("CF5:CF15") '~~> Check if any cell in the range have "Others" If Application.WorksheetFunction.CountIf(rng, "Others") = _ rng.Rows.Count Then .Columns("CG").EntireColumn.Hidden = False Else .Columns("CG").EntireColumn.Hidden = True End If End With End Sub 

编辑:

如果你想显示/隐藏列,即使有一个“Others”的实例,那么你也不需要循环。

 Sub Sample() Dim ws As Worksheet Dim rng As Range '~~> Set your worksheet here Set ws = ThisWorkbook.Sheets("Sheet1") With ws '~~> Set your range here Set rng = .Range("CF5:CF15") '~~> Check if all the cells in the range have "Others" If Application.WorksheetFunction.CountIf(rng, "Others") > 0 Then .Columns("CG").EntireColumn.Hidden = False Else .Columns("CG").EntireColumn.Hidden = True End If End With End Sub 

这个怎么样? 这假定如果范围中的单个单元格被设置为“其他”,CG列将被显示,并且如果没有它们,CG将被隐藏。 不知道这是你真的以后?

 Dim cell As Range For Each cell In Range("$CF$5:$CF$15") If cell = "Others" Then ActiveSheet.Columns("CG").EntireColumn.Hidden = False Exit For Else ActiveSheet.Columns("CG").EntireColumn.Hidden = True End If Next cell