Базовые типы данных и операции над ними, страница 8

Ограничить количество отображаемых в списке Members of элементов можно, если:

1.  В верхнем раскрывающемся списке Project/Library указать, например, VBA – для отображения только компонентов VBA, или Excel – только компонентов Excel, и т.д.

2.  В левом списке Classes – название группы отображаемых элементов, например, Constants, для отображения только констант указанного ранее приложения.

После выбора необходимой константы в списке Members of в нижней части окна Object Browser отображается короткая справка о ней. Для получения исчерпывающей информации необходимо щелкнуть по кнопке с вопросительным знаком  Help.

Выражения

До сих пор рассматривались различные способы представления и описания элементов данных. Теперь настала пора научиться изменять эти данные с целью получения новой информации.

Значение любой переменной может быть изменено двумя способами:

1.  с помощью ввода информации из внешней среды, и

2.  с помощью присваивания.

Наиболее простой способ получения информации от пользователя – с помощью функции InputBox. Функция в VBA – это особый вид процедуры, которая возвращает некоторое значение. Данные, которые программа получает из внешней среды, называются введенными данными, или просто вводом. Функция InputBox возвращает данные типа String и имеет следующий прототип:

InputBox( <приглашение> [,<заголовок>] ),

где:

приглашение – это обязательная текстовая строка, которая указывает пользователю, какого рода информация от него ожидается,

заголовок – это необязательная текстовая строка, в которой записан заголовок окна ввода.

Функция ввода InputBox работает следующим образом:

1.  Отображает окно ввода с:

r  указанным приглашением,

r  заголовком, а также

r  полем ввода и

r  двумя кнопками – OK и Cancel.

2.  Ждет от пользователя ввода информации в поле редактирования.

3.  Завершается:

r  с подтверждение введенной информации – по нажатию кнопки OK, или

r  с отменой введенной информации – по нажатию:

a)  кнопки Cancel,

b)  клавиши Esc,

c)  кнопки закрытия окна  Закрыть.

Использование функции InputBox рассмотрим на примере процедуры Echo, которая эхом отображает введенную пользователем информацию. Листинг программы приведен далее:

1:  Sub Echo()

2:     

3:     Const strTitle = "Echo" ' Заголовок окон

4:     Dim strPrompt As String ' Приглашение

5:     Dim strTemp As String   ' Основные данные

6:     

7:     strPrompt = "Введите данные"

8:     strTemp = InputBox(strPrompt, strTitle)

9:     MsgBox strTemp, , strTitle

10:   

11:  End Sub

Строка 3 – объявление константы символьного типа strTitle, которая будет использоваться в качестве заголовков окон.

Строка 4 – объявление переменной типа String strPrompt для хранения текста приглашения, отображаемого в окне ввода функции InputBox.

Строка 5 – объявление переменной strTemp типа String для хранения введенного значения.

Строка 7 – Присваивание переменной strTitle текста отображаемого приглашения.

Строка 8 – Вызов функции InputBox.

В раскрывшемся окне ввода функции InputBox отображается переданное ей сообщение, заголовок окна и результат ввода. После нажатия на кнопку OK окно ввода закроется, а результат ввода будет присвоен переменной strTemp. Если же окно будет закрыто по нажатию кнопки Cancel, или клавиши Esc, или кнопки  Закрыть – переменной strTemp будет передана пустая строка нулевой длины.

Строка 9 – вывод в окне сообщения содержимое переменной strTemp.

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

Строки 2, 6 и 9 – пустые. Они введены для придания программе большей наглядности и разделяют различные её функциональные части. Пустые строки, после отступов и осмысленных имен переменных и констант, являются еще одни элементом оформления текста программы.

Инструкцией присваивания неформально мы пользовались уже не один раз. Она является основной «рабочей лошадкой» любой программы, поскольку ни одна из них без неё не обходится. Далее рассмотрим её более подробно, и более формально.

Например, инструкция:

Var1 = 1

присваивает значение литерала 1 типа Integer переменной Var1. Иными словами она помещает (записывает) число 1 в область памяти с именем Var1. То есть, семантически, инструкция присваивания означает «сохранить».

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

[Let] <имя> = <выражение>.

То есть, в единственной переменной, имя которой расположено слева от знака «=», сохраняется (записывается, присваивается) значение выражения, расположенного справа от него. Необязательное ключевое слово Let (Пусть) в VBA оставлено для совместимости с предыдущими версиями языка BASIC. Тогда, приведенную выше инструкцию присваивания можно записать с использованием старого диалекта языка следующим образом:

Let Var1 = 1.

Дословно она означает следующее – «Пусть переменная Var1 равна 1».

В VBA обе синтаксические формы являются равноправными и допустимыми. Но в последнее время чаще используется форма без ключевого слова Let, как более простая и больше соответствующая смыслу инструкции присваивания – «присвоить», «записать» «сохранить», а не «равно». В обоих случаях при этом переменная Var1, расположенная слева от знака присваивания, получит одно и тоже значение – 1.

Знак операции присваивания «=» хотя внешне и напоминает известный всем из школьного курса математики знак равенства, но смысл (семантика) его совсем другой. Знак равенства в математике служит для обозначения того факта, что две величины равны между собой. Это позволяет решать уравнения и находить такие значения неизвестных, при которых это равенство соблюдается. В программировании же он означает совсем другое – запись некоторого значения в участок памяти, на который указывает имя переменной.