Константа – это неизменное значение в программе VBA. Константы используются в математических операциях, операциях сравнения, а также в качестве аргументов для процедур. Различают литеральные, именованные и внутренние константы.

Литеральные константы

 Значения литеральных констант записываются непосредственно в программный код.

Sub Circle_Area_01()
    Dim CircleArea As Single, Radius As Single
    Radius = 5
    CircleArea = 3.1415 * (Radius * Radius)
    MsgBox CircleArea, , "Площадь круга"
End Sub

Здесь 3.1415 - это численная литеральная константа, а "Площадь круга" - строковая литеральная константа. Константы можно изменять только редактированием исходного кода VBA.

Именованные константы

 Именованные константы перед их использованием необходимо явно объявлять, используя ключевое слово Const.

 

Sub Circle_Area_02()
    Const Pi = 3.1415
    Const Caption = "Площадь круга"
    Dim CircleArea As Single, Radius As Single
    Radius = 5
    CircleArea = Pi * (Radius * Radius)
    MsgBox CircleArea, , Caption
End Sub

Здесь Pi - это численная именованная константа, а Caption - строковая именованная константа. 

Именованные константы используются для повышения читабельности программного кода процедур, а также для более простого обновления и сопровождения процедур и программ. Всегда проще и быстрее изменить значение один раз в начале процедуры, чем искать это значение по всему коду и изменять многократно. 

Создание именованных констант

При выборе имен для именованных констант необходимо руководствоваться теми же правилами и рекомендациями, которые необходимо соблюдать при выборе имен для переменных. Для констант можно использовать те же самые типы данных, которые используются для переменных.

Задание типа константы

Объявление конкретного типа данных для константы производится аналогично объявлению типа данных для переменной, за исключением того, что используется ключевое слово Const вместо Dim.

Sub Circle_Area_03()
    Const Pi As Single = 3.1415
    Const Caption As String = "Площадь круга"
    Dim CircleArea As Single, Radius As Single
    Radius = 5
    CircleArea = Pi * (Radius * Radius)
    MsgBox CircleArea, , Caption
End Sub

Здесь Pi - это именованная константа, имеющая тип данных Single, а Caption - именованная константа, имеющая тип данных String.

Объявление конкретного типа данных для константы может повысить точность и скорость вычислений.

Область действия констант

Именованные константы можно объявлять как в процедурах (между ключевыми словами Sub и End Sub), при этом константа будет иметь область действия процедурного уровня, так и в области объявлений, в начале модуля, тогда константа будет иметь область действия модульного уровня. Главной целью использования именованных констант является предотвращение повторения значений литеральных констант в процедурах, поэтому целесообразно, чтобы именованные константы имели наибольшую область действия и были доступны всем процедурам в модуле.

Const Pi As Single = 3.1415
Sub Circle_Area()
    Const Caption As String = "Площадь круга"
    Dim CircleArea As Single, Radius As Single
    Radius = 5
    CircleArea = Pi * (Radius * Radius)
    MsgBox CircleArea, , Caption
End Sub
 
Sub Circle_Lenght()
    Const Caption As String = "Длина окружности"
    Dim CircleLenght As Single, Radius As Single
    Radius = 5
    CircleArea = 2 * Pi * Radius
    MsgBox CircleArea, , Caption
End Sub

В приведенном выше программном коде, Caption - константа процедурного уровня, а Pi - константа модульного уровня, ее значение доступно и процедуре Circle_Area и процедуре Circle_Lenght.

Внутренние константы

В языке VBA существует ряд внутренних констант, называемых также предопределенными константами. Внутренняя константа – это именованная константа, определенная разработчиками языка VBA. Все внутренние константы, определяемые VBA, начинаются с букв vb. Кроме этого существуют внутренние константы host-приложений. Например, внутренние константы Excel начинаются с букв xl, а внутренние константы Word начинаются буквами wd. Для просмотра полного списка имеющихся внутренних констант, определяемых VBA или host-приложением, используйте Object Browser.