Деструкторы виртуального базового класса - «лучшая практика» - вы всегда должны использовать их, чтобы избежать (трудно обнаружить) утечки памяти. Используя их, вы можете быть уверены, что все деструкторы в цепочке наследования ваших классов вызываются (в правильном порядке). Наследование из базового класса с использованием виртуального деструктора делает деструктор наследующего класса автоматически виртуальным (так что вам не нужно повторно указывать «виртуальный» в объявлении деструктора класса наследования).
Я использовал переменную row
в VBA этого листа. Затем я изменил имя переменной row
на что-то еще, как MyRowName
. Хотя в VBA не было такой переменной, как row
, она все равно сохраняла строчную букву для этого слова. Как я уже упоминал выше, все работало нормально, то есть ActiveCell.row
вернул то, что нужно для ActiveCell.Row
.
По просто эстетическим причинам я скопировал весь VBA на другой рабочий лист, и ошибка была испорчена. Строка вернулась в верхний регистр.
VBA не чувствителен к регистру, поэтому я не потерял бы слишком много сна над ним. Редактор пытается преобразовать все переменные случаи, чтобы он был затемнен. Скорее всего, определение ActiveCell каким-то образом было прикручено.
Мне также немного надоело смотреть, где именно я объявил строку с маленькой буквой, насколько это нигде не было объявлено.
Таким образом, найдено отличное решение - добавьте в модуль следующее:
Public Sub TestMe
Dim Row as Long
End Sub
И посмотрите, как меняется весь код. Затем вы можете удалить его.