Worksheet_Change隐藏独立取消隐藏目标列

时间:2018-04-27 11:34:50

标签: excel-vba vba excel

我想在两个不同的目标中隐藏和取消隐藏基于“是”或“否”的列。

我的代码是:

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的行如果之前可见就会被隐藏。

2 个答案:

答案 0 :(得分:0)

据我所知,你不能彼此独立地隐藏细胞。我用于单个单元格的大部分内容都是使用与背景相同的颜色(白色背景上的白色字体示例),但每次说都不会隐藏。

答案 1 :(得分:0)

在这种情况下,您不需要将sourcesheet设置为ActiveSheet。您已将键入C4的单元格E4Activesheet以触发代码。

如果您输入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 吗? 你是指水果,仔细观察某些东西,还是同龄人或社会地位的人? :)