按值复制范围时,VBA 抛出内存不足错误

问题描述 投票:0回答:1

我正在 Excel 中处理一个相当普通的表格(大约 7k 行),在将数据从一个位置复制到不同文件中的另一个位置时遇到错误。 复制是通过命令完成的

destCol.value = sourceCol.value

我确保两个范围都有匹配的大小,并且只获取数据,而不是整个列。

当循环列到达最近添加的特定列时,我在该行看到“内存不足”错误。新列是一个文本列,大部分为空,但有时最多可包含 2k 个字符。似乎奇怪的是,任务管理器没有显示内存使用量的峰值,所以我认为也许某些用于复制的临时数组太大而导致操作无法成功?

有没有办法可以查看内存中该列占用了多少内存以及内存限制是多少,为什么在这个例子中会出现这个错误?

我可以使用复制和粘贴特殊 xlPasteValues 命令复制范围,但我希望了解这种情况下发生的情况。 (我希望复制 6k 行乘 1 列范围是可行的)

excel vba out-of-memory
1个回答
0
投票

我以前见过当单元格包含太多字符时会抛出此错误。听起来这对你来说不应该是这样,但我可以想办法让它发生。

很抱歉,我没有足够的声誉来发表评论,或者我会在输入答案之前评论这个问题,但是两个不同文件的范围是什么?甚至可能是 .CSV 到 .XLSX?

如果文件之间的分隔符不同,VBA 可能会尝试将整个 CSV 文件推送到目标范围的第一个单元格中。如果您的 Excel 工作表无法识别 CSV 分隔符,就会发生这种情况。

这可能是由于区域设置而发生的,例如在丹麦,我们的 CSV 文件默认使用分号作为分隔符而不是逗号。因此,如果我做了与您相同的操作而不关心分隔符,我会得到相同的错误。如果你生活在一个用逗号分隔小数、用点分隔千位的地方,那么你很可能和我一样,需要在 excel 中更改这些设置!

© www.soinside.com 2019 - 2024. All rights reserved.