Excel表单对象限制?内存不足编译错误

Posted

技术标签:

【中文标题】Excel表单对象限制?内存不足编译错误【英文标题】:Excel form object limit? Compile Error out of memory 【发布时间】:2016-12-04 02:17:19 【问题描述】:

我创建了一个打开表单的 Excel 工作表,但我似乎达到了某种对象限制。我这样说是因为没有其他代码更改,如果我添加更多文本框,它将不再打开,并且我收到内存不足的编译错误。

我看过多篇关于内存不足的帖子,其中建议使用“set object = nothing”。但是我不相信这对我的情况有帮助,因为我没有使用任何全局对象,而且我所有的 pvt 子变量都是整数、字节或货币。据我了解,无论如何,所有私有维度都应由 VBA 垃圾收集器在函数结束时终止。

我导出了我的 form1,它显示 UserForm1.frx 为 4,143KB,而 UserForm1.frm 为 140KB。

我确实达到了上限吗?我该如何确认? 有没有办法从excel中获得更多,因为这似乎是内存限制? 如果我有上限,Visual Studio Professional 的上限是否比 Excel 表格的上限更高?

【问题讨论】:

很难认为这样的错误是由于内存“达到对象限制”造成的,如果没有更多细节也很难找出问题所在。代码中的一些错误导致内存无限增长,或者安装错误,在这种情况下您可能需要重新安装 Excel。 140KB 是一个表单模块的 ton 代码。那是多少行代码?表单上有多少个控件? 3429 行 不知道如何检查控件,我不认为它是安装,我只是在添加新对象时遇到问题。这当然可能是我的编程中的一个错误,但它似乎并没有自行扩展。我只有一堵坚固的墙。 如果你不知道你有多少个控件,你有太多了。您可能想要查看动态控件或子表单。不管这是否是问题,重构它。这就是我所说的无法控制的大。实际的 VBA 限制可能类似于 `VB6 限制](msdn.microsoft.com/en-us/library/aa240819(VS.60).aspx)。 IIR 对编译后的二进制文件的大小也有 64K 的限制,但无法验证。 所以大小实际上可能是这里的限制。考虑到这一点,Visual Studio Professional 是否允许更大的尺寸?我希望它会,但是查看您提供的链接,它基本上指出大小限制可以有多种不同的形式,并且很难追踪来源。确实不可能减少我正在使用的对象的数量并仍然创建我正在构建的对象。 【参考方案1】:

默认情况下,Excel 是 32 位,并且确实有 2 GB 的内存限制,但是我发现如果您卸载并重新安装为 Excel 2016 64 位,您的虚拟内存使用量将增加到 8 TB。这会降低任何程序的广泛使用范围,但它确实允许您构建更大的程序!这就是我需要的任何方法。

这是引导我到达那里的来源: http://www.decisionmodels.com/memlimitsc.htm

【讨论】:

我还把表格分成了多个表格,分别加载到excel表格上分享日期

以上是关于Excel表单对象限制?内存不足编译错误的主要内容,如果未能解决你的问题,请参考以下文章

在vs中进行qt桌面应用开发时,编译器堆溢出的编译错误(error C1060编译器堆内存不足)

在vs中进行qt桌面应用开发时,编译器堆溢出的编译错误(error C1060编译器堆内存不足)

eclipse编译项目内存不足,电脑有内存但xmx又设不了更大

带有 2 个对象参数的 Excel VBA 对象子调用给出编译错误:预期 =

Solaris 12.3 C++ 编译器内存不足

编译错误:过程太大需要帮助