(i).Delete从Excel表格中删除行时缓慢

我正在使用VBA从其他数据的子集中填充Excel“表”范围。

获取数据的速度很快(可以来自caching数组,也可以来自另一个表中数据的SQL查询),但是添加和删除操作很慢。

With Worksheets("Overview").ListObjects("OverviewServiceTable") For i = .ListRows.Count To 1 Step -1 .ListRows(i).Delete Next For i = 0 To UBound(cache) Set NewRow = .ListRows.Add(AlwaysInsert:=True) NewRow.Range.Cells(1, 1).Value = cache(i) Next End With 

使用一些基本的概要分析,每行最多需要添加和删除行。 清理和更新这样的表有更快的方法吗? 否则,我会诉诸使用格式化的“普通”单元格范围看起来很漂亮,但是像Autofilters等好东西会消失。

谢谢。

您可以尝试将计算设置为手动,并在代码运行时closures屏幕更新

 Application.Calculation = xlCalculationManual Application.ScreenUpdating = False your code here Application.Calculation = xlCalculationAutomatic Application.ScreenUpdating = True 

我有同样的问题,但closures计算,屏幕更新等没有为我工作。 在search网页并调整我的VBA超过一个小时后,这是我的解决方法:

 Range("NamedTable").Clear Range("NamedTable").RemoveDuplicates Columns:=1 

第一行清除名为“NamedTable”的表中的所有行,并留下标题行(如果存在)。

第二行利用了表中所有单元格现在都是空白的事实,并删除了所有重复行(分析第一列中的“重复项”),

我知道,这有点晚了,但..

 listobject.DataBodyRange.Rows.Delete 

对未来用户有一点帮助; o)