(VBA)IF = TRUE的布尔条件;尽管如此,还是会跳过胆量

时间:2012-11-20 16:20:18

标签: excel vba boolean

我已经设置了以下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

2 个答案:

答案 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