我正在使用VBA从其他数据的子集填充Excel“表格”范围。
获取数据的速度很快(来自缓存数组或来自另一个工作表中数据的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
使用一些基本的分析,每行最多需要添加和删除行。是否有更快的方法来清除和更新这样的表?否则,我将使用“普通”单元格范围,格式化看起来很漂亮,但随后自动过滤器之类的好东西将会消失。
感谢。
答案 0 :(得分:5)
您可以尝试将计算设置为手动,并在代码运行时关闭屏幕更新
Application.Calculation = xlCalculationManual
Application.ScreenUpdating = False
your code here
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
答案 1 :(得分:2)
我遇到了同样的问题,但关闭计算,屏幕更新等对我来说并不适用。在搜索网页并调整我的VBA超过一个小时之后,这是我的解决方法:
Range("NamedTable").Clear
Range("NamedTable").RemoveDuplicates Columns:=1
第一行清除表中名为“NamedTable”的所有行,留下标题行(如果存在)。
第二行利用了表格中的所有单元格现在都是空白的事实,并删除了所有重复的行(分析第一列中的“重复”)
答案 2 :(得分:1)
我知道,这有点晚了但是......
listobject.DataBodyRange.Rows.Delete
为未来的用户提供一点帮助; o)