程序太大

时间:2010-09-20 12:01:25

标签: vba error-handling ms-office

我收到此错误消息 - Procedure too large - 在VBA中。这个错误的原因和出路是什么?

7 个答案:

答案 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。你应该把它分解成不同的子程序。

http://msdn.microsoft.com/en-us/library/Aa264541

答案 2 :(得分:1)

如果使用64位版本的Office创建了宏,则可能会收到此错误消息。有关更多详细信息和解决方法,请参阅以下文章:

  

"Compile Error: Procedure too large" error message when you try to run a VBA macro in a 32-bit version of an Office 2010 program

答案 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 英特尔处理器肯定可以完成工作。只需在您的计算机上安装更好的计算机处理器和更好的内存,它就会工作。