我試圖檢查使用VBA填充我的行和列不同的條件下的測試條件。擅長:如果用
這是我到目前爲止已經試過:
For i = 1 To Lastrow
For j = 1 To 11
If (IsEmpty(ws1.Range("C12"))) And (IsEmpty(ws1.Range("D12"))) = True Then
ws2.Cells(i, j) = ws1.Cells(i, j).Value
ElseIf (IsEmpty(ws1.Range("C12")) And (ws1.Cells(i, 8) <= ws1.Cells(12, 4))) = True Then
ws2.Cells(i, j) = ws1.Cells(i, j).Value
ElseIf (IsEmpty(ws1.Range("D12")) And (ws1.Cells(i, 8) <= ws1.Cells(12, 4))) = True Then
ws2.Cells(i, j) = ws1.Cells(i, j).Value
ElseIf (ws1.Cells(12, 3) >= ws1.Cells(i, 7) And ws1.Cells(12, 3) <= ws1.Cells(i, 8)) Or (ws1.Cells(12, 4) >= ws1.Cells(i, 7) And ws1.Cells(12, 4) <= ws1.Cells(i, 8)) Or ((ws1.Cells(12, 3) >= ws1.Cells(i, 7)) And (ws1.Cells(12, 4) <= ws1.Cells(i, 8))) Then
ws2.Cells(i, j) = ws1.Cells(i, j).Value
End If
Next j
Next i
正如你所看到的,我試了很多條件。
問題是與地方細胞C12 OR D12是空的語句。 如果D12爲空,代碼應該給我所有從C12開始的日期。
例如,我想,從15/05/2017開始的一切:
這就是我得到的結果是:
正如你所看到的,它不正確。 我對所有東西都進行了單獨測試,並且它可以正常工作,但是當我把所有東西都放到一起時,就會出現一些錯誤。
此外,我真的很懷疑,如果我的If/ElseIf
語句測試所有條件才能或者如果我在一個適當的方式寫。 是否有另一種方法可以按照我想要的順序運行它?
你並不需要在'If'塊'= TRUE'條件。你可以簡單地寫'If'。你的日期欄是否以日期格式?如果不是,那麼你的比較就會失敗。 –
Taosique
@Taosique但是對於'IsEmpty'仍然是必要的,不是嗎?是的,他們是......一切都是日期格式,我查了一下。 – paulinhax
是的,如果你的業務邏輯需要它的話。 – Taosique