Vba 如果单元格具有给定值,则隐藏列
如果A1发生变化,我想隐藏一些列,但恐怕函数工作表_的变化不起作用 我有下面的代码,但是如果我改变A1,什么也不会发生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
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