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