Range("H2:H" & lrow).Value
будет двумерным массивом (Value
из Range
всегда является двумерным массивом, если задействовано более одной ячейки);вы получаете несоответствие типов , потому что вы не можете сравнить 2D-массив с Date
;если вы не можете использовать условное форматирование , вам нужно сравнить отдельные индексы массива.
Последнее, что вы хотите сделать, - это итерировать каждую отдельную ячейку (в противном случае ваш следующий вопрос будетmsgstr "как заставить этот цикл работать быстрее?"Получите этот массив в Variant
и итерируйте этот массив - так как это всего 1 столбец, сделайте его одномерным массивом с Application.Transpose
:
Dim values As Variant
values = Application.Transpose(Range("H2:H" & lastRow).Value)
Dim i As Long, current As Long
For i = LBound(values) To UBound(values)
current = i + 1 'array would be 1-based, so to start at row 2 we need to offset by 1
If values(i) > Date Then
ActiveSheet.Cells(current, 8).Interior.Color = vbYellow
End If
Next
Таким образом, вы попадете на лист только тогда, когда вы иметь к.