(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