Excel VBA "If", "Or" и "And" частично работают - PullRequest
0 голосов
/ 06 января 2019

У меня есть код, который проходит по ячейкам и заполняет ячейку на основе оператора if, который содержит функцию Or, а затем функцию And.

Код частично работает, секция Or работает, но секция And игнорируется, а ячейки заполняются только на основе секции Or.

Может ли кто-нибудь помочь, чтобы код учитывал в функции And, а не только в разделе Or.

Ниже приведен код.

Sub MarkUp()
    Worksheets("TO_Project").Activate

    ActiveSheet.Cells(1, 24) = Date
    ActiveSheet.Cells(1, 25).Value = DateAdd("d", 30, ActiveSheet.Cells(1, 24))

    MarkUpLastRow = ActiveSheet.Range("f100000").End(xlUp).Row

    For RowCount = 2 To MarkUpLastRow
        If ActiveSheet.Cells(RowCount, 4) = "01 Prospect" Or ActiveSheet.Cells(RowCount, 4) = "02 Capture" Or ActiveSheet.Cells(RowCount, 4) = "03 Proposal" Or ActiveSheet.Cells(RowCount, 4) = "04 Submitted" And ActiveSheet.Cells(RowCount, 16) < ActiveSheet.Cells(1, 24) Then
            ActiveSheet.Cells(RowCount, 16).Interior.ColorIndex = 37
        End If
    Next RowCount
End Sub

Ответы [ 2 ]

0 голосов
/ 06 января 2019

Вы можете использовать эту конструкцию: (условие ИЛИ условие ИЛИ условие) И условие

0 голосов
/ 06 января 2019

Из-за приоритета оператора ваше состояние анализируется как:

If _
  (ActiveSheet.Cells(RowCount, 4) = "01 Prospect") _
  Or (ActiveSheet.Cells(RowCount, 4) = "02 Capture") _
  Or (ActiveSheet.Cells(RowCount, 4) = "03 Proposal") _
  Or (ActiveSheet.Cells(RowCount, 4) = "04 Submitted" And ActiveSheet.Cells(RowCount, 16) < ActiveSheet.Cells(1, 24))

Видимо, вы имели в виду:

If _
  (ActiveSheet.Cells(RowCount, 4) = "01 Prospect" _
   Or ActiveSheet.Cells(RowCount, 4) = "02 Capture" _
   Or ActiveSheet.Cells(RowCount, 4) = "03 Proposal" _
   Or ActiveSheet.Cells(RowCount, 4) = "04 Submitted") _
  And (ActiveSheet.Cells(RowCount, 16) < ActiveSheet.Cells(1, 24))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...