如果单元格具有给定值,则隐藏列

时间:2017-03-31 08:22:23

标签: excel vba excel-vba

如果A1更改,我想隐藏一些列,但我担心函数Worksheet_Change不起作用。

我有以下代码但如果我改变A1没有任何反应。

Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address = "A1" Then

        Call hideColumns()
        '
        '
    End If
End Sub

2 个答案:

答案 0 :(得分:3)

更改为

If Target.Address = "$A$1" Then 

或者可能使用(我最喜欢的):

If Not Intersect(Target, Range("A1")) Is Nothing Then 

答案 1 :(得分:0)

隐藏列列(“B”)。EntireColumn.Hidden = False / True 或 隐藏行行(“2:2”)。EntireRow.Hidden = False / True

实施例

Private Sub Worksheet_Change(ByVal Target As Range)
    Application.EnableEvents = 0

    If Not Intersect(Target, ([A1])) Is Nothing Then
        If Target.Value = "" Then
            Columns("D").EntireColumn.Hidden = False
        Else
            Columns("D").EntireColumn.Hidden = True
        End If
    End If

    Application.EnableEvents = 1
End Sub
  

Range.Hidden Property (Excel) 返回或设置Variant值,指示行或列是否隐藏,将属性设置为True以隐藏行或列。指定的范围必须跨越整个列或行。

           

Application.EnableEvents Property (Excel) EnableEvents Excel中的应用程序属性VBA用于为指定对象启用事件。它的布尔值为True或False。