Как изменить имя глобальной переменной в проекте Excel VBA? - PullRequest
0 голосов
/ 27 августа 2018

Если кто-то должен продолжать работать над проектом / модулем Excel VBA после того, как предыдущий разработчик покинул компанию, как они могут безопасно изменить имя глобальной переменной ?

Эти имена глобальных переменных могут быть проблематичными, если они вводят в заблуждение, пишут с ошибками, выглядят как другая переменная, не следуют выбранному соглашению и т. Д.

Изменение их с помощью функции поиска / замены - проблема, потому что иногда это слово появляется в комментариях.

Изменение их путем копирования / вставки является проблемой, потому что это долго, и вы можете пропустить некоторые, особенно если есть много случаев или если вы измените его на что-то похожее.

Есть ли способ сделать это безопасно через Excel "IDE" или с помощью другого инструмента?

1 Ответ

0 голосов
/ 27 августа 2018

То, что вам нужно сделать здесь, называется рефакторинг - вам необходимо внести потенциально опасные изменения в код, не влияя на его поведение. Сделайте это неправильно и код сломается!

Переименование идентификатора, который используется в одном или нескольких местах, - это переименование рефакторинг.

Большинство современных IDE имеют такую ​​функцию (и несколько других рефакторингов ). Однако VBE был на пике своей славы задолго до того, как Visual Studio стал полнофункциональным инструментом, которым он стал с тех пор - черт, VBE был Visual Studio (6.0) в 1998 году!

Так что у вас действительно есть два варианта:

  • Выполните рефакторинг вручную - функциональность IDE search & replace (Ctrl + H) может быть здесь опасной, поскольку она обрабатывает код как простой текст без семантического понимания: вам нужно проверить каждый случай в отдельности или рискнуть переименовать идентификатор, который не ссылался на переменную, которую вы пытаетесь переименовать.
  • Используйте сторонний инструмент - Я не знаю никаких надстроек VBIDE, которые достаточно глубоко понимают код, позволяющий безопасно реорганизовать код VBA, кроме открытого исходного кода Rubberduck проект, которым я управляю с октября 2014 года). Эта надстройка анализирует весь ваш проект, создает таблицу символов и позволяет вам перемещаться и, да, реорганизовывать / переименовывать любой идентификатор, автоматически обновляя все сайты вызовов.

Rubberduck's rename refactoring at work

Обратите внимание, что Rubberduck - очень активный проект с открытым исходным кодом, постоянно улучшающийся. Синтаксический анализ VBA сложный , и функциональное получение VBE наравне с современными IDE - это не малое и не легкое занятие ... но это забавно , и да, это работает.

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