Excel,VBA:清除内存

Waterplea

我有一个Excel宏,没有什么花哨的东西,没有对象,只是带有公式的简单旧循环。基本上是这样的:

我在一行中的各行之间循环,将相当大的SUMPRODUCT函数分配给单元格而不执行它们。循环浏览完行后,我将执行Range.Value = Range.Value两次以执行公式并将结果另存为值。然后,我进入下一篇专栏。

随着Excel使用的每一列内存显着增加,并且在完成宏并保存文件后-内存仍在使用(如果我可以信任任务管理器)。关闭并重新打开文件后,所有内存当然都已释放,我可以继续工作。由于内存限制,我已经无法处理32位Excel上需要的所有列。

我想知道,也许我可以在各列之间实施一些技巧,以使Excel忘记它要记住的内容?我并不在乎它是否会影响性能(以防它缓存了对进一步计算有用的任何东西),我只需要防止内存使用量过大而无法处理。我在Google上搜索了一下,但是所有建议都与将大对象设置为空有关-我实际上并没有对任何东西设置太多内容,只是循环浏览,所以可能不适用于我的情况。

代码是这样的(现在不要放在我身上,但这是其中的通用简化版本):

for i = 1 to 12
    ThisWorkbook.ActiveWorksheet.Range(Cells(1,i),Cells(x,i)).Font.Color = vbWhite

    for m = 1 to x
        ThisWorkbook.ActiveWorksheet.Cells(m, i).Formula = "'=SUMPRODUCT(blah)"
    next m

    ThisWorkbook.ActiveWorksheet.Range(Cells(1,i),Cells(x,i)).Value = ThisWorkbook.ActiveWorksheet.Range(Cells(1,i),Cells(x,i)).Value
    ThisWorkbook.ActiveWorksheet.Range(Cells(1,i),Cells(x,i)).Value = ThisWorkbook.ActiveWorksheet.Range(Cells(1,i),Cells(x,i)).Value

    ThisWorkbook.ActiveWorksheet.Range(Cells(1,i),Cells(x,i)).Font.Color = vbBlack
next i

基本上,我将它们涂成白色,所以看不到凌乱的函数文本,添加函数,执行它,另存为值,将文本着色为黑色。重要补充:我使用SUMPRODUCT对关闭文件中的某些单元格求和。

用户名

这真的不足以帮助您提高效率。我现在可以为您指出一些技巧。

要记住的第一件事是在宏开始时将应用程序屏幕更新切换为false。

Application.ScreenUpdating = False

然后在宏代码结束之前将其切换回

Application.ScreenUpdating = True

现在无需更改字体颜色。在执行宏时,屏幕将被锁定以刷新,因此直到宏完成工作后您才能看到更改。

考虑一下,也禁用事件。

Application.EnableEvents = FalseApplication.EnableEvents = true屏幕更新一样的想法。

第二件事是利用Evaluate()函数。请搜索它,并阅读该功能的效率。

而不是把一个功能单元格,然后做.Value = .Value你可以只是Evaluate()一个表达和直接返回结果是更快的电池!

所以你可以做类似的事情

for i = 1 to 12
    ThisWorkbook.ActiveWorksheet.Range(Cells(1,i),Cells(x,i)).Value = Evaluate("=SUM(blah)")
next i

希望您能明白。

以下是一些有关如何加速宏的提示的链接:

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Excel,VBA:清除内存

来自分类Dev

VBA Excel清除

来自分类Dev

ComboBox清除Excel VBA

来自分类Dev

如何清除VBA宏的内存以防止内存错误?

来自分类Dev

Excel VBA清除活动单元格

来自分类Dev

VBA清除/重置Excel文档的正确方法?

来自分类Dev

Excel清除依赖下拉列表VBA

来自分类Dev

VBA清除/重置Excel文档的正确方法?

来自分类Dev

Excel VBA清除活动单元格

来自分类Dev

清除Excel VBA中的特定列集

来自分类Dev

内存不足错误VBA-Excel

来自分类Dev

如何在Mac Excel VBA上清除剪贴板

来自分类Dev

Excel 2013 VBA清除所有筛选器宏

来自分类Dev

Excel 2013 VBA清除活动过滤器

来自分类Dev

Excel VBA-从第2行开始清除列内容

来自分类Dev

出现msg框后清除VBA Excel文本框

来自分类Dev

修改Excel VBA程序-清除列中的单元格

来自分类Dev

如何在Mac Excel VBA上清除剪贴板

来自分类Dev

Excel VBA WorkSheet_Change清除空白内容

来自分类Dev

克隆工作表,命名,清除单元格 - Excel VBA

来自分类Dev

如何清除WritableBitmap的内存

来自分类Dev

如何正确清除内存?

来自分类Dev

如何清除NSTimer内存?

来自分类Dev

如何清除WritableBitmap的内存

来自分类Dev

VMWare内存清除

来自分类Dev

使用VBA清除Excel单元格格式,而不清除NumberFormat

来自分类Dev

用R循环清除内存

来自分类Dev

如何清除或禁用内存缓存?

来自分类Dev

从JS内存中清除对象