В этом руководстве объясняется, что означает ошибка компиляции VBA и как она возникает.
Перед запуском вашего кода редактор VBA компилирует код. В основном это означает, что VBA проверяет ваш код, чтобы убедиться, что все требования существуют для его правильного запуска - он проверит, что все переменные объявлены (если вы используете Option Explicit, который вам следует!), Проверьте, что все процедуры объявлены , проверьте циклы и операторы if и т. д. Компилируя код, VBA помогает свести к минимуму любые возникающие ошибки времени выполнения.
(Дополнительную информацию об ошибках VBA см. В нашем Руководстве по обработке ошибок)
Необъявленные переменные
Если вы не объявляете переменные, но ваш Option Explicit включен в верхней части модуля, а затем вы запускаете макрос, произойдет ошибка компиляции.
Если вы нажмете ОК, соответствующая процедура перейдет в режим отладки.
В качестве альтернативы, перед запуском кода вы можете принудительно выполнить компиляцию кода.
в Меню, Выбрать Отладка> Скомпилировать проект.
Компилятор найдет все ошибки компиляции и соответствующим образом выделит первую найденную.
Незаявленные процедуры
Если ваш код относится к процедуре, которая не существует, вы также получите ошибку компиляции.
Например:
1234 | Дополнительная процедура вызова ()'код здесь тогдаПозвонить в NextProcedureКонец подписки |
Однако если процедура - Следующая процедура не существует, то произойдет ошибка компиляции.
Неправильная кодировка - ожидаемый конец инструкции
Если вы создаете цикл, используя Для… Каждый… Далее или С… Закончить с и забыть и Следующий или Конец с… Вы также получите ошибку компиляции.
123456 | Sub CompileError ()Dim wb As WorkbookDim ws как рабочий листДля каждого ws In wbMsgBox ws.NameКонец подписки |
То же самое произойдет с оператором If, если опущено End If!
Отсутствующие ссылки
Если вы используете библиотеку объектов, которая не является частью Excel, но вы используете объекты из библиотеки в объявлении переменной, вы также получите ошибку компиляции.
Эту проблему можно решить либо с помощью позднего связывания - объявив переменные как объекты; или добавив соответствующие Библиотека объектов к проекту.
в Меню, Выбрать Инструменты> Ссылки и добавьте в свой проект соответствующую библиотеку объектов.