Задача: при заполнении определённой ячейки должен запускаться макрос на копирование определённой строки с последующей вставкой (через Insert) в определённый диапазон.
Ошибка: При вводе данных в ячейку вылетает ошибка "run time error -2147417848 80010108. Method 'Insert' of object 'Range' failed" и отмечается строка кода макроса: Range("A3").Insert
Примечание: Ошибка может проявиться не сразу и программа отработает корректно, но вводя данные в определённую ячейку ("J3") на какой-то итерации всё равно вылетает.
При исполнении макроса отдельно ошибок не возникает, отработка 100%. Код макроса:
Скрытый текст
Sub ADD_ROW()
Range("A2:J2").Copy Range("A3").Insert
Set SourceRange = Range("A3") Set fillRange = Range("A3:A120") SourceRange.AutoFill Destination:=fillRange Range("A3:J3").Borders.Weight = 3 Range("A3:J3").Borders.Color = #de00ff Range("A4:J4").Borders.LineStyle = 1
End Sub
Код программы:
Скрытый текст
Private Sub Worksheet_Change(ByVal Target As Range) If Not Intersect(Target, Target.Worksheet.Range("J3")) Is Nothing Then Application.EnableEvents = False If WorksheetFunction.Count(Intersect(Target, Target.Worksheet.Range("J3"))) > 0 Then ADD_ROW Application.EnableEvents = True End If End Sub
Ошибка не воспроизвелась. Вообще, про эту ошибку много чего есть в интернетах Ваш обработчик я бы на всякий случай переписал так (без использования функций листа)
Код
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("J3")) Is Nothing And Target.Count = 1 Then
Application.EnableEvents = False
If IsDate(Target) Then ADD_ROW
End If
Application.EnableEvents = True
End Sub
Согласие есть продукт при полном непротивлении сторон