Excel 基于行值隐藏/取消隐藏列

Excel 基于行值隐藏/取消隐藏列,excel,vba,Excel,Vba,我需要取消隐藏E列,以防从B列中的下拉列表中选择“摄影机轴检查”值。我已通过各种Google搜索,这是我提出的代码,我认为符合我的要求: Option Explicit Private Sub Worksheet_Change(ByVal Target As Range) Columns("E:E").EntireColumn.Hidden = [B7:B999] = "Camera AXIS check" End Sub 但是,每当我尝试检查它时,它都不喜欢第3行 有人能告诉我哪里

我需要取消隐藏E列,以防从B列中的下拉列表中选择“摄影机轴检查”值。我已通过各种Google搜索,这是我提出的代码,我认为符合我的要求:

Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
    Columns("E:E").EntireColumn.Hidden = [B7:B999] = "Camera AXIS check"
End Sub
但是,每当我尝试检查它时,它都不喜欢第3行

有人能告诉我哪里出错了吗


为了提供有关任务的更多详细信息,B列有第7行中的这些选择,最多可以有无限多行,而E列只适合在B列中的选择等于“摄影机轴检查”时显示。这是完成所需操作的适当VBA宏:

Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Value = "Camera AXIS check" And Target.Column = 2 Then
    Columns("E").EntireColumn.Hidden = True
        Else
        Columns("E").EntireColumn.Hidden = False
    End If
End Sub
如果我正确理解了注释,如果“摄像机轴检查”在“B”列中的任何位置,则该列应保持不隐藏。下面的子项执行与上面相同的操作,但也测试您要查找的值是否在列中的任何位置,如果是,则不会重新隐藏列

Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Value = "Camera AXIS check" And Target.Column = 2 Then
    Columns("E").EntireColumn.Hidden = False
        Else
        If IsError(Application.Match("Camera AXIS check", Range("B:B"), 0)) Then
            Columns("E").EntireColumn.Hidden = True
        End If
    End If
End Sub

请注意,VBScript和VBA不是同一种语言。如果您试图仅为某些行取消隐藏列,则这将不起作用。您可能需要添加
和Target.column=2
,因为这是专门针对列B的。@DarrellH Good shout,以防该值显示在其他任何位置。回答:普卢蒂安,非常感谢。我欠你一杯啤酒。达雷尔H也是。没问题,很乐意帮忙。我可能会让你坚持下去!我谈到了另一个问题,即如果选择了下一行中除“摄影机轴检查”之外的任何其他内容,“E”列往往会隐藏。即使“摄影机轴检查”的第一个选择首先取消隐藏列“E”。你知道为什么吗?