Процедура слишком большая - PullRequest
       38

Процедура слишком большая

15 голосов
/ 20 сентября 2010

Я получил это сообщение об ошибке - Procedure too large - в VBA. В чем причина и выход этой ошибки?

Ответы [ 4 ]

17 голосов
/ 20 сентября 2010

Возможно, у вас есть одна или несколько гигантских процедур / функций, и я думаю, что VBA имеет ограничение в 64 КБ или что-то на одну процедуру.

Вы исправляете это, разделяя эту процедуру на несколько процедур, которые затем могут быть вызваныодна процедура.

Таким образом, вместо:

 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
5 голосов
/ 20 сентября 2010

Ваша скомпилированная процедура не может превышать 64 КБ.Вы должны разбить его на различные подпрограммы.

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

1 голос
/ 20 сентября 2010

Это сообщение об ошибке может появиться, если макрос был создан с использованием 64-разрядной версии Office.Для получения дополнительной информации и обходного пути см. Следующую статью:

Сообщение об ошибке «Ошибка компиляции: слишком большая процедура» при попытке запуска макроса VBA в 32-разрядной версии OfficeПрограмма 2010 года

0 голосов
/ 02 апреля 2018

Идея GiantProcedure не работала для меня, используя Microsoft Powerpoint 2013. Затем я добавил «вызов» перед каждым «proc». Как это:

Sub GiantProcedure()

  Call Proc1()
  Call Proc2()
  Call Proc3()

End Sub

Теперь все работает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...