如何加速移除Excel所有工作表的筛选器?解决运行卡顿冻结问题
移除Excel所有工作表筛选器的VBA代码优化
我在处理Excel文件时,需要用VBA移除所有工作表的筛选器,但初始代码执行耗时很长,还会导致Excel冻结。
初始代码
Sub Auto_Open() Dim xWs As Worksheet For Each Wks In ThisWorkbook.Worksheets On Error Resume Next If Wks.AutoFilterMode Then Wks.AutoFilterMode = False End If Next Wks End Sub
优化后的代码
通过添加手动计算相关语句,代码执行速度得到了明显提升:
Sub Auto_Open() Application.Calculation = xlManual '添加此语句大幅提升速度 Dim xWs As Worksheet For Each Wks In ThisWorkbook.Worksheets On Error Resume Next If Wks.AutoFilterMode Then Wks.AutoFilterMode = False End If Next Wks Application.Calculation = xlAutomatic End Sub
优化说明
Excel默认的自动计算模式会在操作工作表时触发公式重新计算,当工作表数量多、数据量大时,这会极大拖慢代码执行速度。将计算模式临时改为手动,就能避免不必要的计算开销,完成筛选器移除后再恢复自动计算,不会影响后续的正常使用。
内容的提问来源于stack exchange,提问作者BlankerHans
相关产品推荐
相关产品推荐

