If el_rule.Length > 0 Then
If LCase(ActiveCell.Offset(0, el_rule.Item(0).Attributes.getNamedItem("column_number").Text).Value) = LCase(el_rule.Item(0).Attributes.getNamedItem("value").Text) Then
Set el = xDoc.SelectNodes("/simulator")
Else
Set el =....... -code first time
End If
else
Set el =....... -code second time
End If
答案 0 :(得分:1)
我不太关注(因为我不知道el_rule
是什么),但VBA并没有短路其布尔运算符,例如{{1} }。因此,嵌套And
语句在VBA中比在其他语言中更常见。如果If
有时候什么都没有,那么您需要拥有如下代码:
el_rule
作为替代方案,如果If Not el_rule Is Nothing Then
If el_rule.Length > 0 Then
'Code in which el_rule is something And with Length > 0
End If
Else
'code to handle the case when el_rule is nothing
End If
真的是一个特殊情况,那么你可以简单地编写代码,假设它不是,并使用错误处理来捕获它的时间。
答案 1 :(得分:1)
你可以使用助手Boolean
变量
Dim doIt As Boolean
If el_rule.Length > 0 Then doIt = LCase(ActiveCell.Offset(0, el_rule.item(0).Attributes.getNamedItem("column_number").Text).Value) = LCase(el_rule.item(0).Attributes.getNamedItem("value").Text)
If doIt Then
Set el = xDoc.SelectNodes("/simulator")
Else
Set el =....... -code only time
End If