重新格式化并制作了一个可粘贴的示例:
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。
它不能解决,这就是为什么你没有勇气;)