Добрый день, господа!
Подскажите, пожалуйста, в чем может заключаться проблема.
Есть таблица и следующий макрос:
Sub test()
Dim checkRow As Range
Dim colorRow As Range
Dim visaCell As Range
Dim i As Integer
i = ActiveCell.Row
Set visaCell = Cells(i, "E")
Set checkRow = Range("B" & i & ":E" & i & "")
Set colorRow = Range("A" & i & ":Д" & i & "")
For Each cell In checkRow
v = cell.Value
If IsEmpty(v) Then
colorRow.Interior.Color = RGB(230, 184, 183) 'highlight in red
visaCell.Value = "NO"
Exit For
ElseIf visaCell.Value = "NO" Then
colorRow.Interior.Color = RGB(253, 248, 179) 'highlight in yellow
Else
colorRow.Interior.Color = RGB(195, 239, 177) 'highlight in green
End If
Next
End Sub
Алгоритм работы следующий. При изменении ячейки в диапазоне А2:Е4 макрос проверяет условия заполнения четырех ячеек. Если одна из ячеек диапазона B:D пуста, строка A:D закрашивается красным, а поле E заполняется значением "NO", если все ячейки диапазона B:D заполнены, но поле E содержит значение "NO", строка закрашивается желтым, если все поля диапазона B:D заполнены и поле E содержит значение "YES", строка закрашивается зеленым.
Проблема заключается в том, что скрипт отрабатывает нормально при запуске вручную. При подключении к вызову Worksheet_Change Excel падает при вызове первого условия из цикла
If IsEmpty(v) Then
colorRow.Interior.Color = RGB(230, 184, 183) 'highlight in red
visaCell.Value = "NO"
Exit For
Вот код Worksheet_Change:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim rng As Range
Set rng = Range("A2:E4")
If Not Application.Intersect(rng, Range(Target.Address)) _
Is Nothing Then
test
End If
End Sub
Подскажите, что не так.
Заранее спасибо. Файл xlsm приложил. Прим. Д кириллицей потому, как на форуме D латиницей замещается смайлом.