【发布时间】:2011-04-14 15:44:09
【问题描述】:
我在 VBA 中收到此错误消息 -Procedure too large。这个错误的原因和出路是什么?
【问题讨论】:
标签: vba error-handling ms-office
我在 VBA 中收到此错误消息 -Procedure too large。这个错误的原因和出路是什么?
【问题讨论】:
标签: vba error-handling ms-office
您可能有一个或多个巨大的过程/函数,我认为 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
【讨论】:
您的编译程序不能超过 64kb。你应该把它分解成不同的子例程。
【讨论】:
如果宏是使用 64 位版本的 Office 创建的,您可能会收到此错误消息。有关更多详细信息和解决方法,请参阅以下文章:
【讨论】:
GiantProcedure 的想法不适合我,我使用的是 Microsoft Powerpoint 2013。 然后我在每个“proc”之前添加了一个“call”。像这样:
Sub GiantProcedure()
Call Proc1()
Call Proc2()
Call Proc3()
End Sub
现在,它可以工作了。
【讨论】:
不知道为什么推荐票数最高的帖子,因为巨大的程序代码也不适合我。最终起作用的是:
Sub MacroName
Call ProcedureName1
Call ProcedureName2
etc...
End Sub
Sub ProcedureName1
'insert your vba code here
End Sub
只要我调用了正确的命名子,调用语句就会拉出每个子。
【讨论】:
同意,程序应该分成更小的子程序,而不是一大段代码。
当 Excel 的 32 位 安装在 64 位 上运行/编译完美时,我已经看到 Procedure too large 错误安装代码是在上面编写的 - 因此,如果发生 Procedure too large 错误 [突然] 并且以前可以正常工作,请检查您尝试运行代码的 Excel 安装是否为32 位,然后尝试安装 64 位。
【讨论】:
使用 32 位版本的 Office 2010 程序 或者将模块分成几部分
【讨论】:
我的员工在他们较弱的计算机上收到相同的信息,但我没有。因此,要么是您计算机上的内存小于 16GB,要么是您的英特尔处理器太弱。第 8 代之后的 i7 英特尔处理器绝对可以完成这项工作。只需在您的计算机上安装更好的计算机处理器和更好的内存,它就会工作。
【讨论】: