Добрый день!
Задача макроса: вставлять n-ое кол-во строк (задается Inputbox) перед именным диапазоном.
Проблема: при повторном запуске (редко и в первый раз) выдает ошибку "Method 'Insert' of object 'Range' failed error".
Отмечает строчки (либо-либо):
Как вызвать ошибку:
Если добавить например 8 (кол-во любое) строк, потом удалить и снова добавить уже меньше появляется ошибка. Требуется до 8 попыток.
Методы которые не помогли:
Буду рад любому совет.
Microsoft Office 2016
Задача макроса: вставлять n-ое кол-во строк (задается Inputbox) перед именным диапазоном.
Проблема: при повторном запуске (редко и в первый раз) выдает ошибку "Method 'Insert' of object 'Range' failed error".
Отмечает строчки (либо-либо):
- wsWorkSheet.Range("Прочие").EntireRow.Insert
- rngMyCell.Offset(2, 0).EntireRow.Insert
Код |
---|
Sub Файл_1() Dim wsWorkSheet As Worksheet Set wsWorkSheet = Workbooks("Файл 1.xlsm").Worksheets("Затраты") Dim varRow As Variant varRow = InputBox("Введите сколько строк добавить. Для выхода, ничего не вводите и нажмите ОК", "Добавление нового лота") If varRow = "" Then MsgBox "Не ввели кол-во строк", vbCritical Exit Sub ElseIf varRow <= 1 Then MsgBox "Слишком мало строк", vbCritical Exit Sub End If Application.ScreenUpdating = False Application.EnableEvents = False Application.Calculation = xlCalculationManual wsWorkSheet.Range("Шаблон").Copy 'Копирование именного диапазона wsWorkSheet.Range("Прочие").EntireRow.Insert 'Вставка скопированного перед именным диапазоном Application.CutCopyMode = False Dim strShablon As String, rngMyCell As Range, i As Long strShablon = "Шаблон" Set rngMyCell = wsWorkSheet.Range("Код_КП").Find(strShablon) If varRow = 2 Then rngMyCell.Offset(1, 0).Rows("1:1").EntireRow.Delete ElseIf varRow > 2 Then For i = 4 To varRow Range("Шаблон").Offset(1, 0).Rows("1:1").Copy rngMyCell.Offset(2, 0).EntireRow.Insert Next End If Application.ScreenUpdating = True Application.EnableEvents = True Application.Calculation = xlCalculationAutomatic MsgBox "Тест завершен!", vbInformation End Sub |
Как вызвать ошибку:
Если добавить например 8 (кол-во любое) строк, потом удалить и снова добавить уже меньше появляется ошибка. Требуется до 8 попыток.
Методы которые не помогли:
- Изменение переменных
- Вместо именного диапазона вставка по конкретной строчке, найденной ".Find"
- Замена "EntireRow.Insert" на "Insert"
- Указание диапазонов с адресом от книги до листа
Буду рад любому совет.
Microsoft Office 2016