使用ListRows.Item(i).Delete从Excel表中删除行时速度很慢

Cyl*_*ric 1 excel vba excel-vba

我正在使用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
Run Code Online (Sandbox Code Playgroud)

使用一些基本的分析,每行最多需要一秒钟来添加和删除行.是否有更快的方法来清除和更新这样的表?否则我将使用"普通"单元格范围格式化看起来漂亮,但随后像Autofilters等好的东西将会消失.

谢谢.

chr*_*sen 5

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

Application.Calculation = xlCalculationManual
Application.ScreenUpdating = False

your code here

Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
Run Code Online (Sandbox Code Playgroud)