Как определить неисправный код VBA при отсутствии ошибок компиляции / времени выполнения? - PullRequest
0 голосов
/ 22 ноября 2018

Хотелось бы узнать, есть ли способ идентифицировать весь сломанный код vba (например, переменные) при отсутствии ошибок компиляции / времени выполнения?

Например:

Скажем, в ModuleA.bas есть переменная, определенная как:

Public Const REG_SZ AS Long = 1

Другие файлы, например ModuleB.bas, ModuleC.bas и т. Д., Используют эту переменную.

Теперь, если мы удалим файл ModuleA.bas, который содержит переменную REG_SZ, и соберем проект, то мы не увидим ошибок компиляции или выполнения. Только во время отладки вы понимаете, что по умолчанию эта переменная не имеет значения.Когда вы щелкаете правой кнопкой мыши эту переменную в других модулях и нажимаете «Definiton», вы получаете сообщение об ошибке: «Идентификатор под курсором не распознан». Решение состоит в том, чтобы объявить эту переменную локально в каждом файле или повторноустановить исходный файл ModuleA.bas с объявленной этой переменной.

Я хотел бы знать, есть ли способ идентифицировать весь сломанный код vba (пример: переменные) в отсутствие ошибок компиляции / времени выполнения?

Ответы [ 2 ]

0 голосов
/ 22 ноября 2018

На вкладке [Редактор] диалогового окна параметров VBE есть настройка с надписью «Требуется объявление переменной», которая автоматически добавляет Option Explicit к каждому модулю:

require variable declaration

Наличие Option Explicit в разделе объявлений модуля заставляет VBA отказаться от компиляции / запуска проекта, в котором используются необъявленные переменные.

Однако Visual Basic Editor (VBE) не сильно поможет.Надстройки VBE, такие как Rubberduck , могут значительно продвинуть статический анализ кода - например, он может предупредить вас, когда Option Explicit отсутствует в модуле, если переменная никогда не назначается или если процедура не выполняется.не используется, если присвоение является избыточным или перезаписано до использования его значения, если неправильно используется функция IsMissing, ... и многие другие (по состоянию на v2.3 реализовано около 80 проверок, выпуск которых запланирован на 25 ноября).):

Rubberduck code inspections toolwindow

Отказ от ответственности: я управляю этим проектом с открытым исходным кодом.

0 голосов
/ 22 ноября 2018

Чтобы ответить на ваш конкретный вопрос о переменных ... Поставьте оператор Option Explicit в верхней части каждого модуля кода.Любой вставляемый вами код VBA, который не объявляет свои переменные, будет автоматически помечен без необходимости компиляции кода.

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