If Cells(i, 8) = "Cancelled Not Applicable" Or Cells(i, 8) = "Completed" Or Cells(i, 8) <> "" Then
If Cells(i, 23) <> "Cancelled" Or Cells(i, 23) <> "Completed" Then
Cells(i, 23).Interior.ColorIndex = 4
End If
End If
Это говорит:
Если статус вашего дела «Отменено, не применимо» или статус вашего дела «Завершено», или статус вашего дела - любое значение (не пустое), тогда продолжайте.и проверьте, имеет ли состояние вашей программы какое-либо значение (поскольку оно не может быть одновременно «Отменено» и «Завершено» одновременно), а затем выделите его.
Так что на самом деле здесь есть две проблемы.
Ваш Or Cells(i, 8).value <> ""
Здесь вы говорите "Передайте эту строку IF как true, если эта ячейка пуста", потому что это OR
.Это все равно, что сказать: «Если эта курица красная, или эта курица черная, или эта курица существует», то, если вы тестируете синюю курицу, она пройдет, как есть.
Ваш Cells(i, 23) <> "Cancelled" Or Cells(i, 23) <> "Completed"
,Если ячейка содержит «Отменено», то ваше второе условие истинно, поскольку оно не говорит «Завершено», поэтому оно проходит.Если ваша ячейка говорит «Завершено», то ваше первое условие проходит, поскольку оно не «Отменено».Если ваша клетка говорит «Booger Farts», то оба условия проходят, поскольку она не «Отменена» и не «Завершена».Так что на самом деле вы хотите AND
здесь.
Второй момент трудно уловить, поскольку «ИЛИ» - это не то, как мы будем использовать его на английском языке.Это может помочь думать так: если у нас есть тест, подобный IF condition1 OR condition2 OR condition3
, то для выполнения этого условия должно быть выполнено только одно из этих условий.If TRUE OR FALSE OR FALSE
проходит.Ваши условия здесь «Не равны», что добавляет путаницу, но вам просто нужно сконцентрироваться на отдельном условии и определить, возвращает ли оно «ИСТИНА» или «ЛОЖЬ», и сделать ваше заявление IF TRUE OR FALSE
(проходит) или IF TRUE OR TRUE
(проходит) или IF FALSE OR TRUE
(проходит) или IF FALSE OR FALSE
(наконец-то это не получается!).
Вместо этого вы хотите сказать:
Если заполнен CASE STATUS и если PROGRAM STATUS находится в состоянии PROGRESS, или находится в состоянии ожидания, или находится в состоянии ожидания, и т. Д., То CASE STATUS не может бытьОТМЕНЕНО ИЛИ ЗАВЕРШЕНО
Итак:
If Cells(i,8).value <> "" AND (Cells(i, 8).value = "Cancelled Not Applicable" OR Cells(i,8).value = "Completed") AND (Cells(i, 23).Value <> "Cancelled" AND Cells(i, 23).Value <> "Completed") Then
Cells(i, 23).Interior.ColorIndex = 4
End If