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

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

Ответы

Ответ 1

Вероятно, у вас есть одна или несколько гигантских процедур/функций, и я думаю, что у 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

Ответ 2

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

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

Ответ 3

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

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