Страницы: 1
RSS
Ошибка `-2147417848 (80010108)` при вставке строки
 
Внимание! При возникновении ошибки прилагаемый файл вешает эксель (придётся убивать его через диспетчер задач).

Столкнулся с непонятной периодически случающейся проблемой, которая возникает не всегда и не на всех компьютерах (проверял только на MS office 13, но на нескольких компах). Вероятно, ошибка зависит от того, с какой скоростью пользователь нажимает на кнопки.

Механизм вызова ошибки:
1. В в жёлтом столбце вбиваем любое значение.
2. Быстро кликаем правой кнопкой на любой ячейке таблицы и выбираем пункт "Добавить строку".
3. Повторяем 3-4 раза, пока ошибка не появится (она просто то появляется сразу, то не появляется не сразу, где-то её вообще нет. В полном проекте она более стабильно появляется, тут в урезанном файле - реже.)

Всё. Ошибка  `-2147417848 (80010108)` "Method 'Insert' of object 'Range' failed" возникает между двумя безобидными строками:    
Код
shTempRows.Range("$25:$25").EntireRow.Copy
sh2.Range("$26:$26").EntireRow.Insert Shift:=xlDown
Проблема не в условном форматировании (в реальном проекте удалил всё УФ, проблема всё-равно осталась).

Не могу понять, что с чем конфликтует и как лечить. В другом проекте, в аналогичной ситуации выскакивает ошибка c этим же номером, но с описанием "Automation error Вызванный объект был отключен от клиентов."
Я не волшебник, я только учусь.
 
Wiss, а если заменить на shTempRows.Rows(25).Copy sh2.Rows(26)?
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Код
    shTempRows.Rows("25:25").EntireRow.Copy
    sh2.Rows("26:26").EntireRow.Insert Shift:=xlDown
 
Мне нужно именно вставить строку посреди таблицы, так что:
Код
    Application.CutCopyMode = xlCopy
    sh2.Range("$26:$26").EntireRow.Insert Shift:=xlDown
    shTempRows.Range("$25:$25").EntireRow.Copy sh2.Range("$26:$26").EntireRow
Jack Famous, спасибо огромное. Очень похоже, что РАБОТАЕТ!
А почему?
Изменено: Wiss - 22.03.2021 16:54:12
Я не волшебник, я только учусь.
 
New, Ваш вариант, безусловно красивше, но ошибка остаётся. +EntireRow там уже лишним становится, вроде бы.
Я не волшебник, я только учусь.
 
у меня ошибки в вашем файле нет с этим кодом. Просто через Alt+F8 запускаю ваш макрос AddRowForum и он корректно выполняется и на 1-м листе строки добавляются
Изменено: New - 22.03.2021 16:58:45
 
Цитата
New написал:
Просто через Alt+F8 запускаю ваш макрос AddRowForum
Так он и должен нормально отрабатывать. Ошибка происходит когда пользователь поменяет данные и быстро (базовый файл у меня чуть тормозной, поэтому можно и "не очень быстро") нажимает "Добавить строку". Есть подозрение, что там что-то внутри экселя начинает конфликтовать.
Я не волшебник, я только учусь.
 
Любой из 3 вариантов  EntireRow  не надо
Код
shTempRows.Range("25:25").Copy
sh2.Range("26:26").Insert Shift:=xlDown
Код
shTempRows.Rows("25:25").Copy
sh2.Rows("26:26").Insert Shift:=xlDown

Код
shTempRows.Rows(25).Copy
sh2.Rows(26).Insert Shift:=xlDown
 
Да там изначально было:
Код
    shTempRows.Range(sh1TmpRowAddress).Offset(iCount Mod 2).Resize(iCount).EntireRow.Copy
    sh1.Range("SignRow").Resize(1).Insert Shift:=xlDown
Просто я 3 часа (без преувеличения) урезал проект под форум, чтобы было не 1000 строк кода, но ошибка оставалась.
Предположительно, всё равно как именно к строке обратиться. Программа всё-равно потом одинокого все предложенные выше варианты интерпретирует.  Вот вариант Jack Famous, с добавлением пустой строки и последующим копированием шаблона, похоже, что реально помог. Знать бы ещё почему.
Я не волшебник, я только учусь.
 
Так же столкнулся с выпадением данной ошибки при массовой вставке одиночных строк. Код останавливался на строке вставки.
Поиск в сети навел на вариант, который я применил в своем коде и уже не один десяток прогонов ошибки не было. До этого раз на раз выпадала.
Смысл в "редактировании" ячейки активного листа перед запуском основного действия макроса))
https://askdev.ru/q/oshibka-avtomatizacii-excel-vba-vyzvannyy-obekt-otklyuchilsya-ot-svoih-klientov-417966/
Страницы: 1
Наверх