我看到其他用户发布了一些相同的问题,但核心问题似乎并不相同(据我所知)。
我有一个Excel工作簿,遍历大约80 000行和4列数据。这最多需要1-2秒。工作簿确实在其他工作表中进行操作,但是为了测试,我已经关闭了这些工作。如果我打开大约10 Mb的.xlsx,则需要更长时间但不会太多。如果我用一些相当多的代码打开一个.xlsm,那么做同样的事情需要大约6-7秒。
到目前为止我所读到的是应该使用范围的设置变量而不是单元格引用,计算设置为手动,屏幕更新关闭。这些似乎都没有做到这一点。
答案 0 :(得分:0)
如果事件未被禁用,也可以在代码开始之前添加:
Application.EnableEvents = False
一切都完成后将其更改为True。
如果您希望进一步优化,可以将其分配给变量:
Dim Temp as Variant
Temp = ActiveSheet.UsedRange.Value
分析并更改Temp,然后将其放回
ActiveSheet.UsedRange = Temp
答案 1 :(得分:0)
我终于明白了。它与Excel的实例有关。如果在同一个Excel实例中打开多个重型宏文件,则每个文件使用一个实例需要的时间要长很多。我不知道为什么会这样,但是从我读过的内容来看,这是自Office 2003以来的一个错误。
所以现在我所要做的就是确保每个人都使用多个实例。不幸的是,你必须做一些寄存器更改才能自动完成。我目前正在使用.bat文件替代。