根据行值隐藏/取消隐藏列

时间:2019-10-17 13:07:01

标签: excel vba

我需要取消隐藏E列,以防从B列的下拉列表中选择“摄像机AXIS检查”值。我经历了各种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列中的选择等于“相机AXIS检查”。

1 个答案:

答案 0 :(得分:1)

这是完成您所需的适当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

如果我正确理解了注释,那么如果“摄像机AXIS检查”在“ 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