我收到此错误消息 - Procedure too large
- 在VBA中。这个错误的原因和出路是什么?
答案 0 :(得分:17)
您可能拥有一个或多个巨大的程序/功能,我认为VBA的每个程序限制为64k或更高。
您可以通过将该过程拆分为多个过程来修复它,然后可以通过一个过程调用该过程。
所以不要:
Sub GiantProcedure()
... ' lots and lots of code
End Sub
你有类似的东西:
Sub GiantProcedure()
... ' a little bit of common code
Proc1()
Proc2()
Proc3()
End Sub
Sub Proc1()
... ' quite a bit of code
End Sub
Sub Proc2()
... ' quite a bit of code
End Sub
Sub Proc3()
... ' quite a bit of code
End Sub
答案 1 :(得分:5)
您的已编译程序不能超过64kb。你应该把它分解成不同的子程序。
答案 2 :(得分:1)
如果使用64位版本的Office创建了宏,则可能会收到此错误消息。有关更多详细信息和解决方法,请参阅以下文章:
答案 3 :(得分:0)
使用Microsoft Powerpoint 2013,GiantProcedure的想法并不适用于我。 然后我添加了一个"电话"在每个" proc"之前。像这样:
Sub GiantProcedure()
Call Proc1()
Call Proc2()
Call Proc3()
End Sub
现在,它有效。
答案 4 :(得分:0)
不确定为什么推荐推荐票数最高的帖子,因为巨型过程代码对我也不起作用。最终的工作是这样的:
Sub MacroName
Call ProcedureName1
Call ProcedureName2
etc...
End Sub
Sub ProcedureName1
'insert your vba code here
End Sub
只要我调用了正确的命名子项,Call语句就会拉动每个子项。
答案 5 :(得分:0)
同意,程序应该拆分成更小的子程序,而不是一大段代码。
我在 32 位安装的 Excel 上看到了 Procedure too large 错误,当它们在 64 位上运行/编译完全正常时安装代码是在上面写的 - 所以如果是 Procedure too large 错误[突然] 发生并且它以前可以工作,请检查您尝试运行代码的 Excel 安装是否是32 位,然后尝试安装 64 位。
答案 6 :(得分:0)
我的员工在较弱的计算机上收到了同样的信息,但我的计算机上却没有。因此,要么是因为您计算机上的内存小于 16GB,要么是因为您的英特尔处理器太弱了。第 8 代之后的 i7 英特尔处理器肯定可以完成工作。只需在您的计算机上安装更好的计算机处理器和更好的内存,它就会工作。