Почему я могу добавить, но не удалить оператор Dim в режиме отладки? - PullRequest
0 голосов
/ 29 апреля 2019

Немного тривиальный вопрос, но он меня заинтересовал.

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

В режиме отладки нельзя ни удалять, ни изменять Dim операторы без противодействия предупреждающему сообщению:

Это действие будет сбрасывать ваш проект, продолжить в любом случае?

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

Однако я заметил, что добавление объявления в режиме прерывания может быть выполнено без каких-либо проблем.Попытка удалить или отредактировать эту строку, а затем еще раз выдает предупреждение.

Почему можно добавлять, но не удалять / редактировать объявления в режиме прерывания?

1 Ответ

2 голосов
/ 29 апреля 2019

Я настоятельно предполагаю, что среда выполнения VBA не позволяет вам изменять существующие записи в таблице символов. Считайте, что вы сделали что-то вроде

Dim i as Integer
i = 3
Debug.print i

Вы устанавливаете точку останова для Print -статирования и меняете тип i на String - что среда выполнения должна делать с содержимым i? Неявно преобразовать его в строку? А что должно произойти, если конвертация невозможна?

Добавление новой записи в таблицу символов не приносит никакого вреда, поскольку не изменяет ничего, что было сделано ранее, поэтому среда выполнения позволяет вам сделать это.

Кстати: если вы удалите Option Explicit (я знаю, что вы и я никогда этого не сделаете ...) и присвоите значение (необъявленной) переменной: эта переменная теперь помещается в таблицу символов, и если вы пытаетесь добавить * Dim -соглашение теперь, вы получите This action will reset... -метание.

...