Excel VBA慢速计算循环迭代

时间:2015-03-02 16:32:26

标签: excel-vba vba excel

不确定这是否是特定于代码的问题,因此我现在将是一般性的。

我有一个有点复杂的宏,首先读取用户手动输入到工作表中的金融市场数据,然后继续处理该市场数据,生成所需的市场曲线等,然后计算确定的利息估值。

这个过程需要大量的循环,因为有成千上万的仪器需要被重视。但是,我注意到,宏会不时地循环 - 每次迭代大约2-3秒。当我有Excel工作簿时,我可以在底部看到它正在说“计算(4个处理器x%完成)”。

要解决此问题,我必须手动强制Excel关闭;通常这可以解决问题,下次运行程序时效果很好。

我正在运行Windows 8(不是8.1)和Excel 2013.我听说这种组合特别容易崩溃/错误(我自己经历了几次这样的事情,Excel需要很长时间来处理基本的字体格式化等请求或无意识地自动崩溃)。

但是,我想请社区查看问题是否更为普遍/已知。

谢谢!

3 个答案:

答案 0 :(得分:1)

在代码的开头尝试application.visible = false。然后确保最后执行application.visible = true。应该有所帮助。

答案 1 :(得分:1)

作为创建快速excel宏的一般提示:在不通过单元格循环的任何地方,使用范围对象上的with语句或者需要对数据进行操作时,您将获得更好的性能。更精细的方法尝试将数据范围复制到二维数组中,循环遍历数组将比通过工作表中的单元循环快几个数量级,然后可以将数组转储回范围。

答案 2 :(得分:0)

尝试将光标更改为xlBeam 它在Windows 8.1中改变了速度方面的所有内容

Sub CurseurDefault(zz As Boolean)
    If zz = True Then
        Application.Cursor = xlDefault
        'Call ShowCursor(True)
    Else
        Application.Cursor = xlIBeam
        'Call ShowCursor(False)
    End If
End Sub