代码之家  ›  专栏  ›  技术社区  ›  Chopin

如何基于VBA的特定值隐藏/取消隐藏列

  •  1
  • Chopin  · 技术社区  · 6 年前

    script 隐藏或取消隐藏特定的 Columns value 已进入 Column 使用 VBA

    例如,如果 X 任何 cell Column A 那就躲起来 Columns B:C 价值 在里面 Y 然后 Columns D:E 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 回复  |  直到 6 年前
        1
  •  1
  •   user4039065 user4039065    6 年前

    您需要的是工作表更改,而不是工作表选择更改。

    还有一些逻辑冲突。如果列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