Excelmacros自动显示/隐藏下拉列表中的值的列

我试图在Excel 2016中创build一个macros,根据不同单元格中包含的下拉列表自动显示/隐藏列。 下拉(单元格“K7”)目前正在使用Excel的数据validation,在不同的工作表中引用数千个单元格区域(即文本)。

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

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 

谢谢您的帮助!

Worksheet_Change中添加一个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