我一直试图根据两个目标地址中的两个条件目标值隐藏电子表格中的一行。这在我希望它检查一个目标地址时有效,但如果我使用两个目标地址则不行。我还没有在这个网站上找到解决方案。以下是示例代码:
If (Target.Address = "$G$2") And (Target.Value = "Yes") Then
If (Target.Address = "$G$3") And (Target.Value = "Yes") Then
Rows("4").EntireRow.Hidden = True
End If
End If
当我使用第一行时,这是有效的:
If (Target.Address = "$G$2") And (Target.Value = "Yes") Then
Rows("4").EntireRow.Hidden = True
End If
但是当我放入更多条件时,它将不起作用。我不确定这是否是.Hidden内部函数的限制,或者如果VBA不喜欢我的嵌套IF语句。
我会感激任何帮助,
感谢。
修改
我已从评论中解决了我的问题,我没有正确定位两个单独的值,这是我的修复。
If (Target.Address = "$G$2") And (Target.Value = "Yes") Then
If (Worksheets(1).Cells(3, 7).Value = "Yes") Then
Rows("4").EntireRow.Hidden = True
End If
End If
感谢您的帮助。
答案 0 :(得分:5)
您的两个If
语句是互斥的,因为如果Target.Address = "$G$2"
,它显然不能也满足条件Target.Address = "$G$3"
。我怀疑你正在寻找更像这样的东西:
If Target.Value = "Yes" And (Target.Address = "$G$2" Or Target.Address = "$G$3") Then
Rows("4").EntireRow.Hidden = True
End If
答案 1 :(得分:1)
您正在检查相同的对象变量是否等于两个不同的值。根据定义,它们不可能同时成立。假设总是在活动工作表上完成,则必须使用activesheet对象并检查其中单元格的值。
Dim Rng1 As Range
Dim Rng2 As Range
Set Rng1 = ActiveSheet.Range("$G$2")
Set Rng2 = ActiveSheet.Range("$G$3")
If Rng1.Value = "Yes" And Rng2.Value = "Yes" Then
Rows("4").EntireRow.Hidden = True
End If
答案 2 :(得分:0)
我相信您需要检查两个不同的单元格,比如Target1
和Target2
是引用它们的变量:
If (Target1.Address = "$G$2") And (Target1.Value = "Yes") Then
Rows("4").EntireRow.Hidden = (Target2.Address = "$G$3" And Target2.Value = "Yes")
End If
答案 3 :(得分:-1)
你可以这样做:
Row
虽然我强烈建议你符合/usr/local/lib