我试图创建一个script
来隐藏或取消隐藏特定的Columns
,当使用value
将Column
输入VBA
时。
例如,如果在X
中的任何cell
中输入了Column A
,则隐藏Columns B:C
。但是,如果value
中的Column A
是Y
,则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
答案 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事件过程。