我在使用If创建双重条件时遇到问题,所以这就是我隐藏行的原因:
If Target.Address = "$D$35" Then
If (Target.Value = "No") Then
ActiveSheet.Range("37:40").Rows.Hidden = False
End If
If (Target.Value = "Yes") Then
ActiveSheet.Range("37:40").Rows.Hidden = True
End If
End If
现在,我想为此公式添加另一个条件,让我们说那个单元格$D$35
需要" No" 和Cell { {1}}需要"完成" 才能使隐藏功能正常工作。
如何将此插入现有公式?
答案 0 :(得分:1)
1。您可以将And
用于多个条件(参见@jonrsharpe评论)。
实际上看看Or
等其他逻辑运算符...... Logical and Bitwise Operators
2。为什么不使用If\ElseIf\Else
?
很明显,如果Target.Value = "No"
是 true ,则无需测试Target.Value = "Yes"
...
所以就这样做:
If cond1 And cond2 Then
' Some code
ElseIf cond3 And cond4 Then '<--editted
' Some code
Else
' Some code
End If
D35
($ D $ 35)和D36
的值进行处理可以这样做:
If Range("D35")= "No" And Range("D36")= "No" Then
ActiveSheet.Range("37:40").Rows.Hidden = False
ElseIf Range("D35")= "Yes" And Range("D36")= "done" Then
ActiveSheet.Range("37:40").Rows.Hidden = True
End If
而不是
If Target.Address = "$D$35" Then
If (Target.Value = "No") Then
ActiveSheet.Range("37:40").Rows.Hidden = False
End If
If (Target.Value = "Yes") Then
ActiveSheet.Range("37:40").Rows.Hidden = True
End If
End If
注意1:这假设您正在处理正确的工作表
注2:这不是最好的办法...
答案 1 :(得分:0)
首先,它不是一个公式,它是一个子程序。其次,您不必拥有多个IF
块。只需一个即可。
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("D35:D36")) Is Nothing Then
ActiveSheet.Range("37:40").Rows.Hidden = (Range("D35").Value = "No" And Range("D36").Value = "Done")
End If
End Sub
按顺序解释一下:
If Not Intersect(Target, Range("D35:D36")) Is Nothing
或TRUE
中检测到更改,则D35
会返回D36
。如果您希望条件检查非连续范围,请在要检查的范围上使用Union
。(Range("D35").Value = "No" And Range("D36").Value = "Done")
评估为TRUE
,否则为FALSE
。然后,我们将其用作给定范围的Hidden
属性的布尔触发器。希望这有帮助。