我已经设置了以下IF条件:
If Range("D" & x) + Range("D" & z) = 0 = True And (Range("G" & x) = Range("G" & z)) = True And (IsEmpty(Range("A" & x)) = False) = True And (IsEmpty(Range("C" & x)) = False) = True Then
[guts]
End if
我已插入所有(条件)= True ,以便能够在调试时评估每个条件,并且所有条件都返回TRUE = TRUE。然而它并没有执行布尔的胆量。这对我来说没有意义,但希望你们其中一个人能看出它有什么问题。我创建了一个测试表来运行宏,只包含几行我知道应该在所有条件下都返回TRUE的数据,但它不起作用。我觉得这是一个非常明显的错误。
您可以在此处下载包含一些数据的示例:http://www.mediafire.com/view/?rm299bttfsp1v01
答案 0 :(得分:1)
重新格式化了这个并做了一个可行的例子:
Public Sub demo()
Dim x, Z As Long
x = 1
Z = 1
If Range("D" & x) + Range("D" & Z) = 0 = True And _
(Range("G" & x) = Range("G" & Z)) = True And _
(IsEmpty(Range("A" & x)) = False) = True And _
(IsEmpty(Range("C" & x)) = False) = True Then
Debug.Print "[guts]"
End If
End Sub
如果A1 = 12且C1 = 12(例如)
,它对我有用但这就是我写这个的方式:
Public Sub demo()
Dim x, Z As Long
x = 1
Z = 1
'to confirm
Debug.Print Range("D" & x) + Range("D" & Z) = 0
Debug.Print Range("G" & x) = Range("G" & Z)
Debug.Print Not IsEmpty(Range("A" & x))
Debug.Print Not IsEmpty(Range("C" & x))
If Range("D" & x) + Range("D" & Z) = 0 And _
Range("G" & x) = Range("G" & Z) And _
Not IsEmpty(Range("A" & x)) And _
Not IsEmpty(Range("C" & x)) Then
Debug.Print "[guts]"
End If
End Sub
修改的
您可以使用以下代码轻松测试:
Debug.Print Range("D" & x) + Range("D" & Z) = 0 And _
Range("G" & x) = Range("G" & Z) And _
Not IsEmpty(Range("A" & x)) And _
Not IsEmpty(Range("C" & x))
在For Z = 8 To 16
之后粘贴。
它没有解决为真,这就是为什么你没有得到胆量;)
答案 1 :(得分:0)
是不是因为操作的顺序而被挂断了?看起来你可能在第一个条件周围错过了一组括号......
If (Range("D" & x) + Range("D" & z) = 0) = True And (Range("G" & x) = Range("G" & z)) = True And (IsEmpty(Range("A" & x)) = False) = True And (IsEmpty(Range("C" & x)) = False) = True Then
[guts]
End if