По крайней мере, один из случаев выглядит следующим образом:
Функция или подпрограмма не компилируются, и разработчик не знает об этом при запуске проекта VBA, поскольку подпрограмма никогда не вызывается.
Решение:
Этот "мусорный" код можно обнаружить в журналах уровня трассировки Rubberduck.
Например, в моем случае:
Sub CleanSheetOut()
Worksheets(sheetOut).Range("A1:XFD10485576").Clear
Worksheets(sheetOut).Range("A1:XFD10485576").Interior
.Pattern = xlNone
.TintAndShade = 0
.PatternTintAndShade = 0
End Sub
... был неправильным (не компилировался), но никогда не вызывался, поэтому проект работал нормально, но Rubberduck не мог решить.
Правильный код:
Sub CleanSheetOut()
Worksheets(sheetOut).Range("A1:XFD10485576").Clear
With Worksheets(sheetOut).Range("A1:XFD10485576").Interior
.Pattern = xlNone
.TintAndShade = 0
.PatternTintAndShade = 0
End With
End Sub
... компилирует и позволяет Rubberduck нормально анализировать и разрешать.
Журналы: ... показал неисправный саб и в каком модуле я смог его найти.
Комментарий от команды разработчиков Rubberduck:
Компилируется ли VBE на лету, зависит от настроек компиляции в правом нижнем углу вкладки «Редактор» в меню «Инструменты» -> «Параметры».
На самом деле мы пытаемся скомпилировать проект и предупреждаем пользователя, что проект не скомпилируется. Однако вышеупомянутые настройки VBE могут этому помешать. Более того, компиляция перед обновлением может быть деактивирована в собственных настройках Rubberduck.
Подробнее см. в этой ветке Github.
person
Akita
schedule
31.08.2018