У меня есть файл Excel, который берет данные извне и записывает их в ListObject.Замедление при закрытии после ListObject Resize
Как добавить строки один за другим через ListRows.Add очень медленно, я добавляю правильное количество пустых строк на лист и изменяю размер ListObject.
Это работает очень хорошо в Excel 2010.
В Excel 2007, он работает, но когда пользователь закрывает книгу или Excel, она замерзает и для Windows отображает окно аварии (с просьбой, если вы хотите закрыть, перезагрузка или отладки заявление).
Это действительно раздражает и выглядит не очень хорошо :).
Любая идея, что я мог бы сделать, чтобы это предотвратить?
Возможно, у вас есть лучшая идея, чтобы быстро достать тысячи строк в ListObject?
Кроме того, в случайном порядке (я снова открываю файл, ничего не изменяю и выполняю макрос), Resize не удается с сообщением об ошибке, а Excel сработает, если я остановлю выполнение.
Вот функция, которая добавляет пустые строки, если я следую за ним шаг за шагом, все диапазоны правильны и делают то, что мне нужно.
Я уверен, что эта функция вызывает проблему, поскольку она исчезает, когда я прокомментирую вызов этой функции.
Sub AddRowsToListObject(sheetName As String, myTable As ListObject, addRows As Long)
Dim i As Long
If addRows > 0 Then
Sheets(sheetName).Activate
'Add empty rows at the end
i = myTable.DataBodyRange.row + myTable.ListRows.Count
Sheets(sheetName).Range(Cells(i, 1), Cells(i + addRows - 2, 1)).EntireRow.Insert shift:=xlDown
'Offset -1 as you need to include the headers again
myTable.Resize myTable.DataBodyRange.Offset(-1, 0).Resize(myTable.ListRows.Count + addRows, myTable.ListColumns.Count)
End If
End Sub
Я уже это делаю (в основном функция). Он все еще падает. –