使用嵌套的IF语句来隐藏一行

我一直试图在电子表格中隐藏一行,这是基于两个目标地址中的两个条件目标值。 这个工程,当我想要检查一个目标地址,但不是如果我使用两个。 我还没有find在这个网站上的解决scheme。 这里是示例代码:

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 

谢谢你的帮助。

我相信你是在两个不同的单元格被检查后,说Target1Target2是引用它们的variables:

 If (Target1.Address = "$G$2") And (Target1.Value = "Yes") Then Rows("4").EntireRow.Hidden = (Target2.Address = "$G$3" And Target2.Value = "Yes") End If 

你的两个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 

您正在检查相同的对象variables是否等于两个不同的值。 根据定义,它们不能同时成立。 假设这总是在活动页面上完成,你必须使用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 

你可以这样做:

 If (Target.Address = "$G$2") And (LCase(Target.Value) = "yes") And (LCase(Target.Offset(1).Value) = "yes") Then Row("4").EntireRow.Hidden = True 

虽然我强烈build议你排除Row