Процедура слишком большая
Я получил это сообщение об ошибке -Procedure too large
- в VBA. В чем причина и выход этой ошибки?
8 ответов
Вероятно, у вас есть одна или несколько гигантских процедур / функций, и я думаю, что 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
Ваша скомпилированная процедура не может превышать 64 КБ. Вы должны разбить его на разные подпрограммы.
Идея GiantProcedure не работала для меня, используя Microsoft Powerpoint 2013. Затем я добавил "вызов" перед каждым "процессом". Как это:
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
Оператор Call вытягивал каждую из подпрограмм, пока я вызывал правильную именованную подпрограмму.
Это сообщение об ошибке может появиться, если макрос был создан с использованием 64-разрядной версии Office. См. Следующую статью для получения дополнительной информации и обходного пути:
Решено, что процедуры следует разбивать на более мелкие подпрограммы, а не на один гигантский кусок кода.
Я видел слишком большие ошибки процедуры в 32-битных установках Excel, когда они отлично запускаются / компилируются на 64-битной установке, код был написан, поэтому, если это случай процедуры, слишком большая ошибка [внезапно] возникает, и она раньше работала, проверьте, является ли установка Excel, на которой вы пытаетесь запустить код, 32-разрядной версией, и попробуйте вместо нее 64-разрядную установку.
Используйте 32-разрядную версию программы Office 2010 или разделите модуль на части
Мои сотрудники получают то же сообщение на своих более слабых компьютерах, а я - на моем. Так что либо тот факт, что объем памяти на вашем компьютере меньше 16 ГБ, либо тот факт, что у вас слишком слабый процессор Intel. Процессор i7 Intel после 8-го поколения определенно должен справиться со своей задачей. Просто купите лучший компьютерный процессор и лучшую память на вашем компьютере, и он будет работать.