(VBA)IF = TRUE中的布尔条件; 尽pipe如此,跳过胆量
我已经设置了以下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
我已经插入了所有的(condition)= True ,以便能够在debugging时评估每个单独的条件,并且它们都返回TRUE = TRUE。 但是它并没有执行布尔的内容。 这对我来说没有任何意义,但是希望你们中的一个人能看到它有什么问题。 我创build了一个testing表来运行macros,其中只包含了几行数据,我知道在所有的条件下都应该返回TRUE,但是不起作用。 我有一种感觉,这是一个痛苦的明显的错误。
您可以在此下载包含一些数据的示例: http : //www.mediafire.com/view/?rm299bttfsp1v01
重新格式化了这一点,并作出了一个可供参考的例子:
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
编辑
您可以使用以下代码轻松testing:
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
之后粘贴。
它不解决真的,这就是为什么你没有得到胆量;)
难道是你被操作的顺序挂断了吗? 看起来你可能在第一个条件周围缺less一组括号。
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