Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba 如果单元格具有给定值,则隐藏列_Vba_Excel - Fatal编程技术网

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

Vba 如果单元格具有给定值,则隐藏列,vba,excel,Vba,Excel,如果A1发生变化,我想隐藏一些列,但恐怕函数工作表_的变化不起作用 我有下面的代码,但是如果我改变A1,什么也不会发生 Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address = "A1" Then Call hideColumns() ' ' End If End Sub 改为 If Target.Address = "$A$1" Then

如果A1发生变化,我想隐藏一些列,但恐怕函数工作表_的变化不起作用

我有下面的代码,但是如果我改变A1,什么也不会发生

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

        Call hideColumns()
        '
        '
    End If
End Sub
改为

If Target.Address = "$A$1" Then 
或者使用(我最喜欢的):

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

范例

返回或设置一个变量值,该值指示行或列是否隐藏,将属性设置为True可隐藏行或列。指定的范围必须跨越整列或整行


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


Address方法中有一些额外的参数,允许您解除对单元格/行的锁定,即$,如果
target.column*target.row=1,您还可以说,
您真正需要学习的是如何调试代码。像
Debug.Print Target.Address
这样简单的东西会告诉你
.Address
返回一个包含绝对单元格引用的字符串。你有学习如何调试的好指南吗?LOL-只要我看到“我最喜欢的”(特别是美国拼写法),我就想在后面加上“Martian”这个词。(我再次展示了我的年龄——这是我年轻时最喜欢的电视节目之一。)@YowE3K:)我喜欢用这种方式捕捉
工作表_Change
事件,在我看来,这是最可靠和最灵活的(特别是如果你定义了第二个捕捉范围)@ShaiRado,从技术上讲,这两种方式并不相同。当仅更改A1时,第一个将返回
True
,而当同时更改任意数量的单元格时,第二个将返回
True
,只要A1在该范围内。可能与OP有关。对于行是否相同?用“行”代替“列”吗?@ Simuns123用于行2=代码>行(“2:2”)。
If Not Intersect(Target, Range("A1")) Is Nothing Then 
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