首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Excel VBA慢计算循环迭代

Excel VBA慢计算循环迭代
EN

Stack Overflow用户
提问于 2015-03-02 16:32:25
回答 3查看 1.6K关注 0票数 0

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

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

这个过程需要大量的循环,因为有成千上万的工具需要被重视。但是,我注意到,宏有时会非常缓慢地循环--每次迭代大约2-3秒。当我打开Excel工作簿时,我可以在下面看到它的意思是“演算(4个处理器x%完成)”。

为了解决这个问题,我必须手动关闭Excel;通常情况下,这会解决问题,下次我运行该程序时,它可以正常工作。

我正在运行Windows 8(而不是8.1)和Excel 2013。我听说这种组合特别容易崩溃/bug(我自己也经历过几次这种情况,Excel需要很长时间来处理字体格式等基本请求,或者没有明显的原因就会自动崩溃)。

然而,我想请社区看看这个问题是否更普遍/更为人所知。

谢谢!

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-03-03 16:38:30

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

票数 1
EN

Stack Overflow用户

发布于 2015-03-03 02:28:48

在代码的开头尝试application.visible = false。然后确保在结尾处执行application.visible = true。应该能帮上忙。

票数 1
EN

Stack Overflow用户

发布于 2015-06-22 21:33:41

尝试将光标更改为xlBeam --在Windows8.1中,它改变了所有的速度

代码语言:javascript
复制
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
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28814803

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档