vba - 运行时错误'7' : Out of Memory when moving columns

标签 vba excel

提前感谢您提供的所有帮助。我的宏的这一部分应该做的是移动一些“关键”列。我试图以尽可能少的内存密集型方式完成此任务。我没有切割列并插入它们,而是执行了以下操作。那么,为什么我会遇到一个荒谬的内存不足错误呢?它甚至不是很多数据。 Excel 目前的内存使用量上限约为 3.3GB。

清理我的代码有什么建议吗?

'Moves Critical Columns'
Sheets("A").Select
Application.CutCopyMode = False
Columns("H").Insert XlDirection.xlToRight
Columns("H").Value = Columns("X").Value
Columns("X").Delete

Sheets("B").Select
Application.CutCopyMode = False
Columns("H").Insert XlDirection.xlToRight
Columns("H").Value = Columns("X").Value
Columns("X").Delete

Sheets("C").Select
Application.CutCopyMode = False
Columns("E").Insert XlDirection.xlToRight
Columns("E").Insert XlDirection.xlToRight
Columns("E").Value = Columns("AA").Value
Columns("F").Value = Columns("Z").Value
Columns("Z").Delete
Columns("Z").Delete

Sheets("D").Select
Application.CutCopyMode = False
Columns("E").Insert XlDirection.xlToRight
Columns("E").Insert XlDirection.xlToRight
Columns("E").Value = Columns("AA").Value
Columns("F").Value = Columns("Z").Value
Columns("Z").Delete
Columns("Z").Delete

Sheets("E").Select
Application.CutCopyMode = False
Columns("E").Insert XlDirection.xlToRight
Columns("E").Value = Columns("AG").Value
Columns("AG").Delete

Sheets("F").Select
Application.CutCopyMode = False
Columns("E").Insert XlDirection.xlToRight
Columns("E").Value = Columns("AG").Value
Columns("AG").Delete

Sheets("G").Select
Columns("E").Insert XlDirection.xlToRight
Columns("E").Insert XlDirection.xlToRight
Columns("E").Value = Columns("AT").Value
Columns("F").Value = Columns("AU").Value
Columns("AU").Delete
Columns("AU").Delete

Sheets("H").Select
Columns("E").Insert XlDirection.xlToRight
Columns("E").Insert XlDirection.xlToRight
Columns("E").Value = Columns("AT").Value
Columns("F").Value = Columns("AU").Value
Columns("AU").Delete
Columns("AU").Delete

Sheets("I").Select
Columns("E").Insert XlDirection.xlToRight
Columns("E").Insert XlDirection.xlToRight
Columns("E").Insert XlDirection.xlToRight
Columns("E").Value = Columns("T").Value
Columns("F").Value = Columns("BT").Value
Columns("G").Value = Columns("BU").Value
Columns("BU").Delete
Columns("BU").Delete
Columns("BU").Delete

Sheets("J").Select
Columns("E").Insert XlDirection.xlToRight
Columns("E").Insert XlDirection.xlToRight
Columns("E").Insert XlDirection.xlToRight
Columns("E").Value = Columns("T").Value
Columns("F").Value = Columns("BT").Value
Columns("G").Value = Columns("BU").Value
Columns("BU").Delete
Columns("BU").Delete
Columns("BU").Delete

Sheets("K").Select
Columns("E").Insert XlDirection.xlToRight
Columns("E").Insert XlDirection.xlToRight
Columns("E").Value = Columns("BS").Value
Columns("F").Value = Columns("BA").Value
Columns("BA").Delete
Columns("BA").Delete

最佳答案

DoEVENTS可能会有所帮助 - 将它放在一个数组中并运行 DoEvents 会起作用,或者将它放在每一列或其他东西之间。

简单地说,它允许操作系统在你的代码运行之间完成它的工作——我发现将它插入到更长或更重的运行代码中往往有助于解决内存不足错误。

https://msdn.microsoft.com/en-us/library/office/gg264522.aspx有关 DoEvents 的更多信息

关于vba - 运行时错误'7' : Out of Memory when moving columns,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44078733/

相关文章:

vba - 如何从 VBA 中的路径中删除姓氏

arrays - 在 VBA 中将 Long 数组打印到单元格并获取下标超出范围错误

excel - 在列中搜索 1 并在找到时将整行粘贴到另一个工作表中?

html - 使用 VBA 访问 iframe 中的对象

vba - 使用 VBA 将电子邮件从 Outlook 导入 Excel 时,是否可以删除电子邮件正文中的签名

internet-explorer - 如何使用 VBA 拦截和操作 Internet Explorer 弹出窗口

PHPExcel公式边框粗细问题

vba - VBA-错误时如何进入下一个迭代循环

python - 过滤 Pandas 数据透视表

excel - 在 VBA Excel 输入框中屏蔽密码