我有一个 Excel 文件,它从外部获取数据并将其写入 ListObject。
由于通过 ListRows.Add 逐一添加行非常慢,因此我将正确数量的空行添加到工作表并调整 ListObject 的大小。
这在 Excel 2010 中非常有效。
在 Excel 2007 中,它可以工作,但是当用户关闭工作簿或 Excel 时,它会冻结并且 Windows 会显示其崩溃窗口(询问您是否要关闭、重新启动或调试应用程序)。
这真的很烦人,看起来不太好:)。
知道我能做些什么来防止这种情况吗?
也许您有一个更好的主意,可以在 ListObject 中快速添加数千行?
此外,随机(我重新打开文件并没有更改任何内容并执行宏),调整大小失败并显示错误消息,如果我停止执行,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