Я использую Access 2007, и это поведение можно воспроизвести следующим образом.
1) Создайте новый файл accdb базы данных доступа.
2) Откройте базу данных и создайте новый модуль vba.
3) Создайте 1-ю подпрограмму sub1:
Sub sub1()
Msgbox Err.Description
End Sub
4) Создайте вторую подпрограмму sub2:
Sub sub2(Description as String)
Msgbox Description
End Sub
На этом этапе все в норме.
5) Но если я пойду и изменю sub2 так, чтобы «Description» читалось «description», то есть изменил «D» на «d», например, так:
Sub sub2(description as String)
Msgbox description
End Sub
Это также имеет эффект подделки и меняет sub1 тоже! Итак, sub1 теперь выглядит следующим образом:
Sub sub1()
Msgbox Err.description
End Sub
Почему «Err.Description» изменилось на «Err.description»?
Такое поведение, похоже, не влияет на фактическую функциональность кода, поэтому проблем нет. У меня большая проблема в том, что я экспортирую свои модули vba в виде текстовых файлов и помещаю их под контроль SVN. И совсем недавно из-за этого в репозиторий было внесено множество бессмысленных «изменений».
Есть идеи, как этого не допустить?