Страницы: 1
RSS
Зависание Excel при копировании умных таблиц
 
Добрый день!
У меня в макросе возникает непонятная ошибка при копировании данных между умными таблицами. По замыслу сначала я копирую исходные данные из другого файла, из одной умной таблицы в другую, затем фильтрую таблицу, и фильтрованные данные копирую в третью таблицу, которая привязана к listbox-у в форме.

Вначале все работает нормально, но если повторить действия несколько раз, вылетает ошибка и Exel «зависает», приходится закрывать его через диспетчер задач.
В процессе редактирования были разные варианты ошибки - Excel закрывался вообще без сообщений, иногда выскакивала ошибка Fail Fast, но сейчас почти всегда зависает при попытке сделать resize диапазона таблицы. Симптомы: строки в таблице пустые, ячейки по клику не выделяются.
Я находил информацию, что при копировании данных в таблицу надо периодически сохранять файл, но не могу так сделать, потому что файл открывается только для чтения.

Сильно сбивает с толку, что ошибка выскакивает случайным образом - иногда с первого-второго раза, иногда раза с десятого (но обычно рано или поздно выскакивает).
Если кто-то сталкивался с подобным, посоветуйте, что можно сделать?  
 
Копируйте не простым копировать/вставить, КАК ЗНАЧЕНИЯ
 
Не помогло. Происходит то же самое, приложил картинки с ошибкой. Вначале выскакивает ошибка 80010108, в процессе отладки доходит до строки с resize, и затем ошибка 1004. После этого нужно закрывать Excel через диспетчер задач.
 
Раньше о макросах - ни слова...

Не картинками нужно кормить, а небольшой пример показывать.
 
Вообще-то картинки уместнее на форуме по фотошоп, здесь редко по ним лечат
The VBA Guide To ListObject Excel Tables
Код
.Offset(1, 0).Resize(.Rows.Count - 1, .Columns.Count).Rows.Delete
Согласие есть продукт при полном непротивлении сторон
 
Большое спасибо!
Посмотрел ссылку, поменял - проблема вроде бы ушла, по крайней мере в этот раз не смог её добиться )

Не обижайтесь на картинки, файл с макросом довольно большой и запутанный, а делать специальный файл попроще только для повторения непонятной ошибки, честно говоря, не хотелось. Я перед этим сделал себе один тестовый файл, 100 раз в цикле заполнял и очищал таблицу (с помощью такого же кода, как и в рабочем файле), и никаких ошибок не получил.

Итоговый вид такой:
Код
    ' delete old data from table
    Application.DisplayAlerts = False
    With rawDataTable.DataBodyRange
        If .Rows.Count > 1 Then
           .Offset(1, 0).Resize(.Rows.Count - 1, .Columns.Count).Rows.Delete
        End If
        .Clear Content
    End With
    Application.DisplayAlerts = True
    DoEvents
Страницы: 1
Наверх