我想在两个不同的目标中隐藏和取消隐藏基于“是”或“否”的列。
我的代码是:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim sourceSheet As Worksheet
Set sourceSheet = ActiveSheet
If Target.Column = 3 And Target.Row = 4 And Target.Value = "Yes" Then
Application.Goto Reference:="Peer"
Selection.EntireColumn.Hidden = False
Call sourceSheet.Activate
Else
Application.Goto Reference:="Peer"
Selection.EntireColumn.Hidden = True
Call sourceSheet.Activate
End If
If Target.Column = 5 And Target.Row = 4 And Target.Value = "Yes" Then
Application.Goto Reference:="Apple"
Selection.EntireColumn.Hidden = False
Call sourceSheet.Activate
Else
Application.Goto Reference:="Apple"
Selection.EntireColumn.Hidden = True
Call sourceSheet.Activate
End If
End Sub
如何彼此独立隐藏列?如果我对Apples或Peers说不,则两行都会被隐藏,如果我对Apples说“是”,那么Peers的行如果之前可见就会被隐藏。
答案 0 :(得分:0)
据我所知,你不能彼此独立地隐藏细胞。我用于单个单元格的大部分内容都是使用与背景相同的颜色(白色背景上的白色字体示例),但每次说都不会隐藏。
答案 1 :(得分:0)
在这种情况下,您不需要将sourcesheet
设置为ActiveSheet
。您已将是或否键入C4
的单元格E4
或Activesheet
以触发代码。
如果您输入No
,此代码将隐藏对等或 Apple 列,如果您输入其他内容,则会取消隐藏。向单元格添加数据验证,仅允许是或否。
无需选择单元格来隐藏列,只需引用它即可。
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$C$4" Then
Range("Peer").EntireColumn.Hidden = (Target.Value = "No")
'To hide column on another sheet:
ThisWorkbook.Worksheets("Sheet2").Range("Peer").EntireColumn.Hidden = (Target.Value = "No")
ElseIf Target.Address - "$E$4" Then
Range("Apple").EntireColumn.Hidden = (Target.Value = "No")
End If
End Sub
你确定它是 Peer 而不是 Pear 吗? 你是指水果,仔细观察某些东西,还是同龄人或社会地位的人? :)