首页 文章

Excel宏显示/隐藏列基于下拉列表中的值

提问于
浏览
1

我正在尝试在Excel 2016中创建一个宏,该宏根据包含在不同单元格中的下拉列表自动显示/隐藏列 . 下拉(在单元格“K7”中)当前正在使用Excel的数据验证,引用不同工作表中的几千个单元格(即文本)的范围 .

这是我当前的代码(感谢Busse!),我知道它没有自动显示/隐藏功能,可以根据用户在单元格“K7”中选择的内容进行即时显示/隐藏:

Sub Hide_Columns_Containing_Value()

    Dim c As Range

    For Each c In Range("R3:GJU3").Cells
        If c.Value Range("K7").Value Then
            Columns(c.Column).EntireColumn.Hidden = False
        End If
    Next c

End Sub

谢谢您的帮助!

1 回答

  • 2

    在工作表中添加 Worksheet_Change 事件 . 如果只想显示第3行中的值与K7匹配的列,则可以简化一点(不需要 If 语句) .

    Private Sub Worksheet_Change(ByVal Target As Range)
    Dim R, V
    If Target.Address = ("$K$7") Then
        V = [K7].Value
        For Each R In Range("R3:GJU3")
            R.EntireColumn.Hidden = R.Value <> V
        Next
    End If
    End Sub
    

    请注意,要获取列范围,您可以编写 Columns(R.Column)R.EntireColumn .


    如果R3:GJU3范围内可能存在错误,请改用它 . 在这里,如果出现错误,则会隐藏该列,但可以显示该列 .

    Private Sub Worksheet_Change(ByVal Target As Range)
    Dim R, V
    If Target.Address = ("$K$7") Then
        V = [K7].Value
        For Each R In Range("R3:GJU3")
            If IsError(R.Value) Then
                R.EntireColumn.Hidden = True
            Else
                R.EntireColumn.Hidden = R.Value <> V
            End If
        Next
    End If
    End Sub
    

相关问题