我目前正在Excel上用vba编写一个冗长的程序。我的代码似乎都运行良好,直到它到达这三行。奇怪的是,这似乎是标准代码,并在微软网站上找到它,所以我不确定它为什么会这么糟糕地工作:
Worksheets("Product Structure").Range("L2:Q" & Last).SpecialCells(xlCellTypeFormulas, xlErrors).Clear
Worksheets("Product Structure").Range("X2:AC" & Last).SpecialCells(xlCellTypeFormulas, xlErrors).Clear
Worksheets("Product Structure").Range("F" & Last & ":K53000").Clear
当我运行这些excel怪物并且不会回应时,很多时候我不得不重新启动程序。变量“Last”通常约为30,000行,因此显然需要查看大量数据。此外,这两个数据范围完全充满了函数,这两行旨在删除不起作用的函数。
有没有人有更好的解决方案?谢谢!
答案 0 :(得分:1)
在运行代码之前尝试关闭screenupdating。您也可以尝试通过将其设置为手动来暂停计算,但是如果您要清除单元格的两个区域之间存在依赖关系,则应该在调用Clear之间计算表单。
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
With Worksheets("Product Structure")
.Range("L2:Q" & Last).SpecialCells(xlCellTypeFormulas, xlErrors).Clear
.UsedRange.Calculate 'if any dependencies
.Range("X2:AC" & Last).SpecialCells(xlCellTypeFormulas, xlErrors).Clear
.Range("F" & Last & ":K53000").Clear
End With
Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic