2012-11-20 15 views
1

的我有以下IF條件成立:(VBA)IF = TRUE中的布爾條件;跳過膽量儘管這

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,但它不起作用。我有一種感覺,那是一個非常明顯的錯誤。

您可以下載包括一些數據在此示例:http://www.mediafire.com/view/?rm299bttfsp1v01

+0

如果你可以上傳樣本數據 - 只要做到這一點 - 它總是幫助;) – Jook

+0

好吧!我會在一分鐘內完成。 – KHH

+0

是否可以是'Range(「C」'是錯誤的?因爲在你的文件中,這一列是空的 – Jook

回答

0

重新格式化這個和由它製成一個pastable例如:

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(EG)

但是,這是我怎麼會這樣寫:

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 

Ë如果For Z = 8 To 16

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)) 

粘貼:DIT

您可以輕鬆地進行測試,使用此代碼。

它不能解決爲真,這就是爲什麼你沒有得到的膽量;)

+0

哦,整潔。我不知道你可以格式化這樣的條件。 但它仍然沒有'如果你可以試着看看我上傳的樣品,我會非常感激的。 – KHH

+0

看着它 - 你的條件不解決真實 - 看到我的編輯。 – Jook

+0

哦,親愛的。謝謝你,我發現錯誤,今天早些時候,我對包含數據的列進行了更改,並且我忘記了在最後一個條件中更正列字母,我知道這是一個愚蠢的錯誤。凝灰岩幾小時讓你盲目的小細節,我猜。 謝謝! – KHH

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 
+0

對我無關 - 無論有沒有工作 – Jook

+0

I'對不起,但它不起作用,你能看看我上傳的樣品嗎?我感謝你的幫助。 – KHH