Константа – это неизменное значение в программе VBA. Константы используются в математических операциях, операциях сравнения, а также в качестве аргументов для процедур. Различают литеральные, именованные и внутренние константы.
Литеральные константы
Значения литеральных констант записываются непосредственно в программный код.
1.Sub Circle_Area_01()
2.Dim CircleArea As Single, Radius As Single
3.Radius = 5
4.CircleArea = 3.1415 * (Radius * Radius)
5.MsgBox CircleArea, , "Площадь круга"
6.End Sub
Здесь 3.1415 - это численная литеральная константа, а "Площадь круга" - строковая литеральная константа. Константы можно изменять только редактированием исходного кода VBA.
Именованные константы
Именованные константы перед их использованием необходимо явно объявлять, используя ключевое слово Const.
1.Sub Circle_Area_02()
2.Const Pi = 3.1415
3.Const Caption = "Площадь круга"
4.Dim CircleArea As Single, Radius As Single
5.Radius = 5
6.CircleArea = Pi * (Radius * Radius)
7.MsgBox CircleArea, , Caption
8.End Sub
Здесь Pi - это численная именованная константа, а Caption - строковая именованная константа.
Именованные константы используются для повышения читабельности программного кода процедур, а также для более простого обновления и сопровождения процедур и программ. Всегда проще и быстрее изменить значение один раз в начале процедуры, чем искать это значение по всему коду и изменять многократно.
Создание именованных констант
При выборе имен для именованных констант необходимо руководствоваться теми же правилами и рекомендациями, которые необходимо соблюдать при выборе имен для переменных . Для констант можно использовать те же самые типы данных, которые используются для переменных.
Задание типа константы
Объявление конкретного типа данных для константы производится аналогично объявлению типа данных для переменной , за исключением того, что используется ключевое слово Const вместо Dim.
1.Sub Circle_Area_03()
2.Const Pi As Single = 3.1415
3.Const Caption As String = "Площадь круга"
4.Dim CircleArea As Single, Radius As Single
5.Radius = 5
6.CircleArea = Pi * (Radius * Radius)
7.MsgBox CircleArea, , Caption
8.End Sub
Здесь Pi - это именованная константа, имеющая тип данных Single, а Caption - именованная константа, имеющая тип данных String.
Объявление конкретного типа данных для константы может повысить точность и скорость вычислений.
Область действия констант
Именованные константы можно объявлять как в процедурах (между ключевыми словами Sub и End Sub), при этом константа будет иметь область действия процедурного уровня, так и в области объявлений, в начале модуля, тогда константа будет иметь область действия модульного уровня. Главной целью использования именованных констант является предотвращение повторения значений литеральных констант в процедурах, поэтому целесообразно, чтобы именованные константы имели наибольшую область действия и были доступны всем процедурам в модуле.
01.Const Pi As Single = 3.1415
02.Sub Circle_Area()
03.Const Caption As String = "Площадь круга"
04.Dim CircleArea As Single, Radius As Single
05.Radius = 5
06.CircleArea = Pi * (Radius * Radius)
07.MsgBox CircleArea, , Caption
08.End Sub
09.
10.Sub Circle_Lenght()
11.Const Caption As String = "Длина окружности"
12.Dim CircleLenght As Single, Radius As Single
13.Radius = 5
14.CircleArea = 2 * Pi * Radius
15.MsgBox CircleArea, , Caption
16.End Sub
В приведенном выше программном коде, Caption - константа процедурного уровня, а Pi - константа модульного уровня, ее значение доступно и процедуре Circle_Area и процедуре Circle_Lenght.
Внутренние константы
В языке VBA существует ряд внутренних констант, называемых также предопределенными константами. Внутренняя константа – это именованная константа, определенная разработчиками языка VBA. Все внутренние константы, определяемые VBA, начинаются с букв vb. Кроме этого существуют внутренние константы host-приложений. Например, внутренние константы Excel начинаются с букв xl, а внутренние константы Word начинаются буквами wd. Для просмотра полного списка имеющихся внутренних констант, определяемых VBA или host-приложением, используйте Object Browser.