Немного истории на OPTION EXPLICIT и Access VBA
Чтобы продолжить из ответа Тони, вот несколько объяснений, почему существуют проблемы с OPTION EXPLICIT, который не включен в некоторых модулях кода доступа.
В Access 95 и Access 97 (первые две версии Office с VBA) в Access был другой редактор кода, чем в других офисных программах. В Access 2000 Microsoft внедрила VBE из других приложений Office в Access. В то же время MS решила заставить модули Access VBA вести себя так же, как модули в других приложениях. По умолчанию не с OPTION EXPLICIT.
Таким образом, в Access 2000 по умолчанию модули создавались без OPTION EXPLICIT.
Это было, конечно, действительно глупое дизайнерское решение со стороны MS, и они поменяли его позже (я не могу вспомнить, было ли это в Access 2002 или 2003, который исправил проблему и снова установил OPTION EXPLICIT во всех новых модулях) ). Причина, по которой он был глупым (и MS должна была это знать), заключается в том, что Access - это инструмент для разработки приложений базы данных, и, таким образом, он работает со строго типизированными данными. Таким образом, среда кода должна быть строго типизирована по умолчанию, чтобы она гармонировала с данными, с которыми она работает.
В Excel или Word данные не строго типизированы, и поэтому имеет смысл использовать разные типы данных практически для всего, просто для того, чтобы всем было легче. Недостатком реализации этого, не используя OPTION EXPLICIT, является то, что вы можете получить опечатки, которые автоматически вводят новые переменные [такие как переменная «intrdoduce» - если бы я писал этот пост с OPTION EXPLICIT, этого бы не случилось без выдает ошибку во время выполнения! :)]. Это проблема со всеми такими языками, которые работают таким образом (я стараюсь работать в PHP, где имена переменных могут различаться в зависимости от конкретного случая, т. Е. $ Var - это не та же переменная, что и $ var; но я отступаю), но MS приняла решение реализовать это таким образом в Word и Excel, полагая, что людям, пишущим код, будет легче, если они не будут вынуждены объявлять свои переменные.
Итак, MS допустила ошибку, сделав Access-версию VBE похожей на другие приложения, хотя в собственных целях Access не было логики, поддерживающей этот шаг. Затем MS отклонила это изменение и вернулась к предыдущему статус-кво (то есть OPTION EXPLICIT по умолчанию во всех модулях).
Таким образом, вы часто будете видеть приложения, начавшие жизнь в Access 2000, которые имеют повсюду модули без OPTION EXPLICIT. Когда мне приходится работать над таким приложением, моя первая задача - внедрить OPTION EXPLICIT во всех модулях, а затем исправить эту проклятую вещь, чтобы она скомпилировалась (что часто довольно сложно, учитывая, что она была запрограммирована без нее).