Это будет делать основные моменты в зависимости от указанных вами условий. Когда вы запустите его, он остановится на первой строке, в которой вам нужно что-то ввести в столбце O. Если вы хотите, чтобы он продолжал работать до строки 101 и выделил все строки, то удалите, а затем команду Exit Do, которая находится между 2 End If заявления.
Sub Highlight()
Dim TheRow As Integer
TheRow = 9
Application.ScreenUpdating = False 'This hides the visual process and speeds up
'the execution
Do
TheRow = TheRow + 1
If TheRow = 101 Then Exit Do
Cells(TheRow, 1).Select
Selection.Interior.Pattern = 0
Cells(TheRow, 2).Select
Selection.Interior.Pattern = 0
If Not Cells(TheRow, 1).Value = "" And Not Cells(TheRow, 2).Value = "" And Cells(TheRow, 15).Value = "" Then
If Cells(TheRow, 1).Value = "" Then
Cells(TheRow, 1).Select
Selection.Interior.Color = 656
End If
If Cells(TheRow, 2).Value = "" Then
Cells(TheRow, 2).Select
Selection.Interior.Color = 656
End If
Exit Do 'this is the line to remove if you want to highlight all cells
End If
Loop
Application.ScreenUpdating = True
End Sub
А затем создайте обработчик событий, который срабатывает при изменении ячейки в столбце 15. Поместите следующий код в модуль фактической рабочей таблицы (в проводнике проекта VBA дважды щелкните по листу, для которого вы хотите эту функцию; не помещайте его в другой модуль!)
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 15 Then
If Target.Row > 9 And Target.Row < 101 Then Call Highlight
End Sub
Дайте мне знать, если это решение работает, и не забудьте нажать «принять решение» и проголосовать за него!
Удачного кодирования.