我正在尝试在 Excel 中编译一个大项目,但是意外错误经常出现,但并非总是出现。一位工程师告诉我,这和虚拟内存有关。谁能告诉我应该做什么来消除这个问题?谢谢!
就我而言,这是意外发生的,项目并不是特别大。关闭 VBA 主机并重新打开允许项目编译。
要解决此问题,我建议在转到高级系统设置之前尝试最简单的修复...
在控制面板中,转至系统 > 高级系统设置 > 高级选项卡 > 性能设置 > 高级 > 更改虚拟内存。然后选择自定义尺寸并将其增加到合理的值。初始大小 8000,最大大小 15000。单击“确定”并重新启动计算机以进行更改。然后问题就消失了。
解释是,当您编译一个大项目时,VBA 编译时,虚拟内存很快就会被填满。
就我而言,工作簿已损坏。 修复它解决了问题。
此外,有时重新编译 VBA 代码也有帮助(如果有的话):
ALT+F11 打开 VBA 编辑器。
选择菜单:“调试”>“编译”以重新编译表单和代码。
重新打开文件。
感谢 Jamie Garroch here,该错误似乎终于得到解决。
查找他日期为“2023 年 12 月 15 日”和“2024 年 1 月 12 日”的消息。
TLDR:在编译时,64 位 VBE 中“AddressOf”代码的存在是其根本原因。
Jamie Garroch:
“我于 2022 年 11 月向 Microsoft 报告了此问题,从那时起,我在 BrightCarbon 的团队就一直与 Microsoft VBA 团队合作。看起来终于在 64 位版本的 VBE7.DLL 中引入了修复程序从版本 2402 Build 16.0.17304.20000 开始(我在测试频道)。要检查是否有修复程序,请打开此文件夹:
C:\Program Files\Microsoft Office
oot fs\ProgramFilesCommonX64\Microsoft Shared\VBA\VBA7.1
右键单击VBE7.DLL文件,然后在“详细信息”选项卡中检查版本,如下所示:
7.1.11.31 = 35010 问题
7.1.11.33 = 35010 固定”
如果无法更新,只需注释掉代码或者放在条件下即可:
#If Win64 ' Running in Office 64-bit
' Don't do anything!
#Else
' Do your WinAPI stuff with AddressOf callbacks
#End If
如果您觉得有帮助,请不要忘记在链接页面上为他的答案投票。