Я только время от времени использую VBA, и каждый раз, когда я возвращаюсь к нему, меня улавливают некоторые вариации следующего:
У меня есть объект Range
, currentCell
, который я использую, чтобы отслеживать, с какой ячейкой я работаю в электронной таблице. Когда я обновляю это, чтобы указать на другую ячейку, я пишу:
currentCell = currentCell.Offset(ColumnOffset:=1)
Проблема заключается в том, что я забыл ключевое слово Set
, поэтому то, что на самом деле делает эта строка, это использовать свойство по умолчанию для объектов Range
:
currentCell.Value = currentCell.Offset(ColumnOffset:=1).Value
Таким образом, содержимое текущей ячейки перезаписывается тем, что в новой ячейке, и моя переменная currentCell
не изменилась, чтобы указать на новую ячейку, и я наполнился яростью, поскольку я понимаю, что сделал ту же ошибку в сотый раз.
Вероятно, нет лучшего ответа, чем поставить сообщение на моем мониторе, говоря: "Вы помнили, что сегодня используете Set?", но если у кого-то есть предложения, которые помогут мне, я был бы признателен за их слушание. В частности:
- Есть ли способ включить предупреждения, когда вы неявно используете свойства по умолчанию? Я никогда не использовал их специально для этого, я всегда называл
Range.Value
, если бы это имел в виду. - Есть ли хорошая практика для обозначения переменных как "это следует использовать только для чтения из электронной таблицы"? В большинстве кодов, которые я пишу, почти все мои переменные предназначены для сбора данных, и было бы полезно получить предупреждение, если что-то начнет непреднамеренно редактировать ячейки, подобные этому.