Это будет делать основные моменты, основанные на условиях, указанных вами. Когда вы запустите его, он остановится в первой строке, в которой вы должны ввести что-то в столбце O. Если вы хотите, чтобы он продолжал работать до строки 101 и выделял все строки, затем удалите команду «Выход из 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
Позвольте мне знать, работает ли это решение, и не забудьте нажать «принять решение» и проголосовать за него!
Счастливое кодирование.
Вы попробовали что-то самостоятельно или это задача, которую вы просто даете сообществу решить? – dwo
Я попытался условное форматирование. Понял, что это не сработает. Нужен код VBA. – Pat767