使用嵌套的IF语句隐藏行

时间:2016-10-25 15:11:04

标签: excel vba excel-vba

我一直试图根据两个目标地址中的两个条件目标值隐藏电子表格中的一行。这在我希望它检查一个目标地址时有效,但如果我使用两个目标地址则不行。我还没有在这个网站上找到解决方案。以下是示例代码:

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

感谢您的帮助。

4 个答案:

答案 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)

我相信您需要检查两个不同的单元格,比如Target1Target2是引用它们的变量:

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

的资格
相关问题