2015-10-19 112 views
-2

我见过其他用户发布了一些相同的问题,但核心问题似乎并不一样(据我所知)。当其他Excel文件打开时宏缓慢

我有一个Excel工作簿,通过​​大约80 000行和四列数据。这最多需要1-2秒。该工作簿确实在其他工作表中进行操作,但对于测试,我已将这些子工作关闭。如果我打开约10 Mb的.xlsx,则需要更长时间但不多。如果我用一些相当大的代码打开一个.xlsm文件,大约需要6-7秒才能完成相同的操作。

我到目前为止读到的是应该使用范围设置变量而不是单元格引用,计算设置为手动,屏幕更新关闭。这些似乎都没有做到这一点。

回答

0

如果事件没有被禁用,这也可以添加的代码开始之前:

Application.EnableEvents = False 

当一切都完成了它更改为True。

如果你想进一步优化的东西,一种可能性是将其分配给一个变量:

Dim Temp as Variant 
Temp = ActiveSheet.UsedRange.Value 

分析和改变温度,然后把它放回去

ActiveSheet.UsedRange = Temp 
+0

这可能是有保障的。 WB在EnableEvents上依赖很多。用户在Worksheet_Change(ByVal Target As Range)的帮助下更改日期或成本中心。这需要我一两天的时间,但我会确保发布更新。 非常感谢Demetri。 – Mugsinspace

+0

对不起,延迟回复。 enableevents = false不起作用。还没有尝试过变种版本。一旦我尝试过和其他解决方案,我一定会回复。非常感谢,杯子 – Mugsinspace

0

我终于想通出。它与Excel的实例有关。如果在同一个Excel实例中打开多个重型宏文件,则比使用每个文件一个实例需要更长的时间。我不知道这是为什么,但是从我读过的这个错误来看,这是自从2003年以来一直存在的错误。

所以现在我所要做的就是确保每个人都使用多个实例。不幸的是,你必须做一些寄存器更改才能自动实现。我目前正在使用.bat文件替代。

+0

请不要发布“谢谢”作为对问题的回答。一旦你有足够的[声誉](http://stackoverflow.com/help/whats-reputation),你就可以[upvote问题和答案](http://stackoverflow.com/help/privileges/vote-up )你发现有帮助。 – mathielo