Вы можете использовать код ниже.
Отключите события, чтобы остановить запуск события изменения при обновлении значений в столбцах I:K
& N
.
Private Sub Worksheet_Change(ByVal Target As Range)
On Error GoTo ERR_HANDLE
Application.EnableEvents = False
With Target
If .Column = 12 Then
If .Value = "Y" Then
.Offset(, 1) = Date
End If
ElseIf .Column = 1 Then
If Len(.Value) = 10 Then
Cells(.Row, 9).Resize(, 3) = "N" 'Column I:K
Cells(.Row, 13) = "N" 'Column M
End If
End If
End With
EXIT_PROC:
Application.EnableEvents = True
On Error GoTo 0
Exit Sub
ERR_HANDLE:
Select Case Err.Number
Case 13 'Type mismatch.
Resume EXIT_PROC
Case Else 'Any unhandled errors.
MsgBox "Error " & Err.Number & vbCr & _
Err.Description, vbOKOnly, "Error in " & ThisWorkbook.Name
Resume EXIT_PROC
End Select
End Sub
Редактировать после принятия:
Я добавил обработчик ошибок в код по предложению @MathieuGuindon. После устранения ошибки код возвращается к метке EXIT_PROC
, поэтому в процедуре есть только одна точка выхода.