Option Explicit
Visual Basic язык хоть и простой, но местами коварный для новичков.
Коварство это заключается в том, что он является языком с неявной типизацией. Это означает что необязательно объявлять тип используемых переменных, компилятор это может сделать и сам.
Чем это чревато?
Неприятности происходят, когда программист ненароком совершает ошибку при наборе имени переменной (что с любым программистом происходит достаточно часто). Компилятор со спокойной совестью регистрирует эту переменную как новую, что, разумеется, ломает всю логику программы. Код вроде бы и работает, но выдаёт совсем не то, что надо.
Выход есть!
Каждую переменную перед использованием нужно объявлять. А чтоб ни одна из необъявленных переменных не проскочила в программу — в самом начале каждого модуля поставить вот такой вот оператор:
Option Explicit
Теперь во время компиляции макросов Вам будут выдаваться сообщение об ошибке если вдруг в коде программы встретится необъявленная переменная.
Программисты — народ забывчивый и ленивый, поэтому желательно сделать так, чтобы оператор-надсмотрщик появлялся автоматически. Для этого нужно вызвать окно настроек VBE (Tools >> Options) и поставить галочку для пункта Recuire Variable Declaration. По умолчанию эта опция отключена, нужно это безобразие исправить:
Теперь не придётся в каждом новом модуле вспоминать как пишется слово Explicit, да и вообще помнить что нужно всенепременно указать оператор.
Option explicit что это
Налагает на уровне модуля требование на явное описание всех переменных этого модуля.
Option Explicit
Замечания
Инструкция Option Explicit при ее использовании должна находиться в модуле до любой процедуры.
При использовании инструкции Option Explicit необходимо явно описать все переменные с помощью инструкций Dim, Private, Public, ReDim или Static. При попытке использовать неописанное имя переменной возникает ошибка во время компиляции.
Когда инструкция Option Explicit не используется, все неописанные переменные имеют тип Variant, если используемый по умолчанию тип данных не задается с помощью инструкции DefТип.
Пользуйтесь инструкцией Option Explicit, чтобы избежать неверного ввода имени имеющейся переменной или риска конфликтов в программе, когда область определения переменной не совсем ясна.
Пример
В данном примере инструкция Option Explicit заставляет разработчика явно объявлять все переменные. При попытке использования неописанного имени переменной возникает ошибка во время компиляции. Инструкция Option Explicit используется только на уровне модуля.
Option explicit ' Заставляет явно объявлять все переменные. Dim MyVar ' Объявляет переменную. MyInt = 10 ' Необъявленная переменная - причина ошибки. MyVar = 10 ' Использование объявленной переменной ' не приводит к ошибке.
Оператор Option Explicit (Visual Basic)
Принудительное объявление всех переменных в файле или неявное объявление переменных.
Синтаксис
Option Explicit
Компоненты
On
Необязательный элемент. Option Explicit Включает проверку. Если On параметр или Off не указан, по умолчанию используется значение On .
Off
Необязательный элемент. Отключает Option Explicit проверку.
Комментарии
При Option Explicit On отображении или Option Explicit в файле необходимо явно объявить все переменные с помощью инструкций Dim или ReDim . При попытке использовать необъявленное имя переменной во время компиляции возникает ошибка. Оператор Option Explicit Off разрешает неявное объявление переменных.
Если используется оператор Option Explicit , он должен быть указан в файле до всех прочих операторов.
Установка Option Explicit значения Off обычно не рекомендуется. Вы можете допустить ошибку при вводе имени переменной в одном или нескольких местах, что приведет к непредвиденным результатам при выполнении программы.
Если оператор Option Explicit отсутствует
Если исходный код не содержит инструкцию Option Explicit , используется параметр Option Explicit на странице компиляции, Project Designer (Visual Basic). Если используется компилятор командной строки, используется параметр компилятора -optionexplicit .
Установка явного параметра в интегрированной среде разработки
- Выберите проект в обозревателе решений. В меню Проект выберите пункт Свойства.
- Откройте вкладку Компиляция.
- Задайте значение в поле Option Explicit (Явный параметр ).
При создании нового проекта параметру Option Explicit на вкладке Компиляция присваивается значение Параметра Явное в диалоговом окне VB Defaults (Параметры по умолчанию VB ). Чтобы открыть диалоговое окно VB По умолчанию , в меню Сервис выберите пункт Параметры. В диалоговом окне Параметры разверните узел Проекты и решения и выберите пункт Параметры Visual Basic по умолчанию. Начальным значением по умолчанию в VB Defaults является On .
Установка параметра Explicit в командной строке
- Включите параметр компилятора -optionexplicit в команду vbc .
Пример
В следующем примере оператор используется Option Explicit для принудительного явного объявления всех переменных. Попытка использовать необъявленную переменную вызывает ошибку во время компиляции.
' Force explicit variable declaration. Option Explicit On
Dim thisVar As Integer thisVar = 10 ' The following assignment produces a COMPILER ERROR because ' the variable is not declared and Option Explicit is On. thisInt = 10 ' causes ERROR
См. также раздел
- Оператор Dim
- Оператор reDim
- Оператор Option Compare
- Оператор Option Strict
- -optioncompare
- -optionexplicit
- -optionstrict
- Страница «Параметры Visual Basic по умолчанию», папка «Проекты», диалоговое окно «Параметры»
Совместная работа с нами на GitHub
Источник этого содержимого можно найти на GitHub, где также можно создавать и просматривать проблемы и запросы на вытягивание. Дополнительные сведения см. в нашем руководстве для участников.
The .NET documentation is open source. Provide feedback here.
Обратная связь
Отправить и просмотреть отзыв по
Option Explicit. Требование явного объявления переменных
В предыдущей статье уже рассматривались способы явного и неявного объявления переменных, но стоит отдельно обратить внимание на такую команду VBA, как Option Explicit. Не смотря на то, что неявное объявление переменных простым их использованием удобно, с ним могут быть связаны определенные проблемы. При неявном объявлении переменной существует риск случайно создать новую переменную, когда необходимо использовать уже существующую. Такая ситуация может приводить к ошибкам, которые очень сложно выявлять. Использование оператора Dim для объявления переменных не всегда помогает предотвращать ошибки в коде, относящиеся к неявному объявлению переменных.
Для того, чтобы было проще обнаруживать ошибки, связанные с неявным объявлением переменных, в VBA предусмотрена команда Option Explicit. Использование Option Explicit препятствует неявному объявлению переменных, при этом VBA требует объявления всех переменных с использованием оператора Dim. Такие команды, как Option Explicit, называются директивами компилятора и инструктируют VBA о специфических правилах, которым должен следовать VBA при компиляции исходного кода. Option Explicit действует только в пределах модуля, в котором она прописана.
Для того чтобы установить режим Option Explicit, при котором VBA требует явного объявления всех переменных в модуле, необходимо добавить команду Option Explicit в начало модуля, перед любыми объявлениями переменных.
Option Explicit 'требование явного объявления переменных в модуле Dim HelloMsg 'переменная будет использоваться всеми процедурами модуля Sub HelloWorld() HelloMsg="Hello, World!" MsgBox HelloMsg,, "Окно приветствия" End Sub
Если добавить неявное объявление переменной в этот модуль, VBA отобразит ошибку времени исполнения, сообщая о том, что переменная является необъявленной.
Редактором Visual Basic предусмотрена возможность автоматически включать Option Explicit в каждый новый модуль при его создании. Для этого необходимо в редакторе VB зайти в меню Tools/Options и в диалоговом окне «Options» на вкладке «Editor» поставить флажок перед опцией Require Variable Declaration (явное описание переменных).

