Константы

Массивы

Допустимые имена

В VBA пользователь определяет имена переменных, функций, процедур, типов, постоянных и других объектов. Вводимые пользователем имена должны отражать суть обозначаемого объекта так, чтобы делать программу легко читаемой.

Имена переменных, констант, процедур обозначают посредством идентификаторов, сформированных с учетом определенных правил:

1. Длина имени не должна превышать 255 символов.

2. Имя не может содержать точек, пробелов и следующих символов - % , & , !, #.©,$.

3. Имя может содержать любую комбинацию букв, цифр и символов, начинающуюся с буквы.

4. Имена должны быть уникальны внутри области, в которой они определены.

5. Не следует использовать имена, совпадающие с ключевыми словами VBA и именами встроенных функций и процедур.

Хотя регистр букв (верхний или нижний) в имени не имеет значения, умелое использование его может существенно облегчить понимание содержательной стороны переменной. Например, вместо плоских и невыразительных имен

 

процентнаяставка

х__начзнач

 

предпочтительнее использовать следующие имена, которые легче воспринимаются благодаря выделению некоторых символов, входящих в них, разумным использованием верхнего регистра:

 

ПроцентнаяСтавка

х_НачЗнач

Как и в других языках программирования, в VBA вы можете использовать массивы. Примеры объявления массивов приведены ниже:

 

Dim B(3, 3) As Single

Dim A(12) As Integer

 

Первая строка объявляет двумерный массив 3x3 (матрицу), состоящий из действительных чисел. Вторая строка объявляет одномерный массив (вектор) из 12 целых чисел, причем по умолчанию первый элемент массива будет А(0), а последний А(11). В этом случае говорят, что 0 — базовый индекс. Можно изменить базовый индекс, написав в начале листа модуля инструкцию Option Base 1. После этого индексы массивов A и B будут начинаться с единицы. Другим способом изменения базового индекса является использование ключевого слова Tо при объявлении массива:

 

Dim B(1 То 3, 1 То 3) As Single

Dim A(1 To 12) As Integer

 

Массив в программе определяется поэлементно. Например,

 

Dim B(l To 2, 1 То 2) As Single

B(1,1)=2

В(1,2)=4

В(2,1)=1

В(1,2)=6

 

Удобным способом определения одномерных массивов является функция Array, преобразующая список элементов, разделенных запятыми, в вектор из этих значений, и присваивающая их переменной типа variant. Например,

 

Dim A As Variant

А = Array{10,20,30)

В = А(2)

 

Константы, в отличие от переменных, не могут изменять свои значения. Использование констант делает программы легче читаемыми и позволяет проще вносить исправления — отпадает необходимость многократно исправлять значения по тексту программы, т. к. достаточно ввести новое значение при определении константы.

Синтаксис:

[Public | Private] Const ИмяКонстанты [As Тип] = Выражение

 

Аргументы:

Public Ключевое слово, используемое на уровне модуля для описания констант, доступных всем процедурам во всех модулях. Не допускается в процедурах.
Private Ключевое слово, используемое на уровне модуля для описания констант, доступных только внутри модуля, в котором выполняется описание. Не допускается в процедурах.
ИмяКонстанты Имя константы, удовлетворяющее стандартным правилам именования переменных
Тип Один из поддерживаемых типов данных: Byte, Boolean, Integer, Long, Currency, Single, Double. Decimal (в настоящее время не поддерживается), Date, String или Variant. Для каждой описываемой константы следует использовать отдельное предложение as тип
Выражение Литерал, другая константа или любое сочетание, которое включает все арифметические или логические операторы, за исключением Is

 

Пример:

Const ПроцентнаяСтавка As Single = 0.2

Const Фирма = "ООО Бескрайние просторы"

4.7. Операторы ввода / вывода информации

Ввод и вывод информации, как правило, в визуальных средах осуществляется с помощью диалоговых окон. В проектах VBA наиболее часто встречаются две разновидности диалоговых окон: окна сообщений и окна ввода. Они встроены в VBA (встроенные диалоговые окна), и если их возможностей достаточно, то можно обойтись без проектирования диалоговых окон. Окно сообщений MsgBox выводит простейшие сообщения для пользователя, а окно ввода InputBox обеспечивает ввод информации.

 

Функция InputBox Выводит на экран диалоговое окно, содержащее сообщение и поле ввода, устанавливает режим ожидания ввода текста пользователем или нажатия кнопки, а затем возвращает значение типа string, содержащее текст, введенный в поле. Синтаксис: InputBox (prompt [, title] [, default] [, xpos] _ [, ypos] [, helpfile, context]) As Stirng Аргументы: · prompt — строковое выражение, отображаемое как сообщение в диалоговом окне · title — строковое выражение, отображаемое в строке заголовка диалогового окна. Если этот аргумент опущен, в строку заголовка помещается имя приложения · default — строковое выражение, отображаемое в поле ввода как используемое по умолчанию, если пользователь не введет другую строку. Если этот аргумент опущен, поле ввода изображается пустым · xpos — числовое выражение, задающее расстояние по горизонтали между левой границей диалогового окна и левым краем экрана. Если этот аргумент опущен, диалоговое окно выравнивается по центру экрана по горизонтали · ypos — числовое выражение, задающее расстояние по вертикали между верхней границей диалогового окна и верхним краем экрана. Если этот аргумент опущен, диалоговое окно помещается по вертикали примерно на одну треть высоты экрана · helpfile — строковое выражение, определяющее имя файла справки, содержащего справочные сведения о данном диалоговом окне. Если этот аргумент указан, необходимо наличие также аргумента context context — числовое выражение, определяющее номер соответствующего раздела справочной системы. Если этот аргумент указан, необходимо наличие также аргумента helpfile
Процедура MsgBox Выводит на экран диалоговое окно, содержащее сообщение, устанавливает режим ожидания нажатия кнопки пользователем, а затем возвращает значение типа integer, указывающее, какая кнопка была нажата. Синтаксис: MsgBox(prompt[, buttons] [, title] [, helpfile, context]) as VbMsgBoxResult Аргументы: · prompt — строковое выражение, отображаемое как сообщение в диалоговом окне · buttons — числовое выражение, представляющее сумму значений, которые указывают число и тип отображаемых кнопок, тип используемого значка, основную кнопку и модальность окна сообщения. Значение по умолчанию этого аргумента равняется 0. Значения констант, определяющих число и тип кнопок используемого значка, приведены в табл. 11.1—11.3 · title — строковое выражение, отображаемое в строке заголовка диалогового окна. Если этот аргумент опущен, в строку заголовка помещается имя приложения · helpfile — строковое выражение, определяющее имя файла справки, содержащего справочные сведения о данном диалоговом окне. Если этот аргумент указан, необходимо указать также аргумент context · context — числовое выражение, определяющее номер соответствующего раздела справочной системы. Если этот аргумент указан, необходимо указать также аргумент

 

Строковое значение prompt может содержать несколько строк. Для разделения строк допускается использование символа возврата каретки (Chr(13)), символа перевода строки (Сhr (10)) или комбинацию этих символов (Chr(13) & Chr (10)).

Также допускается объединение нескольких строк (фрагментов) в одну непосредственно в месте размещении аргумента prompt с помощью символа конкатенации (амперсанд) «&».

Например:

MsgBox «Строка1» & Переменная & «Строка 2»

 

Значения аргумента buttons процедуры MsgBox, определяющие отображаемые кнопки в диалоговом окне:

Константа Значение Отображаются кнопки
vbOKOnly
vbOKCancel
vbAbortRetryIgnore
vbYesNoCancel
vbYesNo
vbRetryCancel

 

Значения аргумента buttons процедуры MsgBox, определяющие отображаемые информационные значки в диалоговом окне:

Константа Значение Отображаются кнопки
vbCritical
vbQuestion
vbExclamation
vbInformation

 

Значения аргумента buttons процедуры MsgBox, определяющие основную кнопку в диалоговом окне:

Константа Значение Номер основной кнопки
vbDefaultButton1
vbDefaultButton2
vbDefaultButton3
vbDefaultButton4

 

При написании программ с откликом, в зависимости от того, какая кнопка диалогового окна нажата, вместо возвращаемых значений удобнее использовать следующие константы VBA, которые делают код программы более удобочитаемыми, к тому же, их легко запомнить.

 

Константа Значение Нажатая кнопка
vbOK OK
vbCancel Отмена (Cancel)
vbAbort Прервать (Abort)
vbRetry Повторить (Retry)
vblgnore Пропустить (Ignore)
vbYes Да (Yes)
vbNo Нет (No)

 

Приведем пример использования окон сообщений:

 

Рис. 4.1.-Диалоговое окно «Пример окна ввода»

 

Рис. 4.2.-Диалоговое окно Пример окна сообщения

 

Рис. 2.3.-Диалоговое окно Ещё один пример окна сообщения

 

Приведем пример программы использования диалоговых окон. Этот пример позволяет отобразить на экране диалоговое окно с тремя кнопками Да, Нет, Отмена и информационным знаком. Клавише Enter назначена функция кнопки Да. По нажатию одной из этих кнопок на экране отображается сообщение, подтверждающее нажатие.

 

Sub ТриКнопки()

Dim Сообщение As String

Dim Кнопка As Integer i

' В переменной Сообщение задается структура диалогового окна

Сообщение = vbYesNoCancel + vbQuestion + vbbefaultButtonl

‘ В переменную Кнопка заносится целое число, возвращаемое MsgBox при

‘ нажатии кнопки

Кнопка= MsgBox("Выбираете Да, Нет или Отмена?", Сообщение, "Еще пример”)

' В зависимости от значения переменной Кнопка,

' на экране отображается соответствующее сообщение:

Select Case Кнопка

Case vbYes

MsgBox "Выбрали Да", vblnformation, "Еще пример"

Case vbNo

MsgBox "Выбрали Нет", vblnformation, "Еще пример"

Case vbCancel

MsgBox "Выбрали Отмена", vblnformation, "Еще пример"

End Select

End Sub

 

Демонстрируется выполнение практического задания