2010-09-20 2 views

ответ

16

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

Эта ошибка прямо из 1980-х годов ... VBA достиг нового уровня архаично ... лицо ладонью –

5

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

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

+0

Или иначе рефакторируйте метод. –

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