如何根据特定值VBA隐藏/取消隐藏列

时间:2018-10-10 01:12:28

标签: excel vba

我试图创建一个script来隐藏或取消隐藏特定的Columns,当使用valueColumn输入VBA时。

例如,如果在X中的任何cell中输入了Column A,则隐藏Columns B:C。但是,如果value中的Column AY,则Columns D:E却显示Columns B:C

这是我到目前为止尝试过的:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

    If Range("A").Value = "X" Then
        Columns("B:C").EntireColumn.Hidden = True
    ElseIf Range("A").Value = "Y" Then
        Columns("D:E").EntireColumn.Hidden = True
    Else
    End If
End Sub

1 个答案:

答案 0 :(得分:1)

您需要Worksheet_Change,而不是Worksheet_SelectionChange。

还有一些逻辑冲突。如果列A包含两者 X和Y?此例程对放置在A列中的最后一个值进行“隐藏列”决定。

Private Sub Worksheet_Change(ByVal Target As Range)

    if not intersect(target, range("a:a")) is nothing then
        on error goto safe_exit
        application.enableevents = false
        dim t as range 
        for each t in intersect(target, range("a:a"))
            select case ucase(t.value)
                case "X"
                    Columns("B:C").EntireColumn.Hidden = True
                    Columns("D:E").EntireColumn.Hidden = false
                case "Y"
                    Columns("B:C").EntireColumn.Hidden = false
                    Columns("D:E").EntireColumn.Hidden = true
                case else
                    'do nothing
            end select
        next t
    End If

safe_exit:
    application.enableevents = true
End Sub

删除将其添加到工作表的私有代码表后创建的Worksheet_SelectionChange事件过程。