В предыдущей статье "Литеральные, именованные и внутренние константы VBA" рассматривались процедуры для вычисления длины окружности и площади круга. Значение радиуса, принимающего участие в расчетах, задавалось непосредственно в исходном коде процедуры. Изменим этот код таким образом, чтобы процедура стала интерактивной. Интерактивная процедура - это процедура, которая обменивается с пользователем информацией, получая от него входные данные и отображая различные сообщения. Получение данных от пользователя, сохранение этих данных в переменных, выполнение над ними различных действий и отображение результатов этих действий являются основными элементами, которые необходимы для написания интерактивных процедур. Данные, получаемые от пользователя, принято называть входными данными (input). Для получения входных данных используется функция InputBox либо пользовательская форма (об этом позднее).

Функцией называется специальный тип процедуры VBA, возвращающей некоторое значение. Функция InputBox выводит на дисплей диалоговое окно, которое содержит командные кнопки OK и Cancel, текстовое поле для ввода входных данных и некоторый текст, который запрашивает у пользователя ввод этих данных.

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

Const Pi As Single = 3.1415
Dim CircleArea As Single
Sub Circle_Area_04()
    Const Title As String = "Площадь круга"
    Dim Radius As Single, Temp As String
    Temp = InputBox("Введите радиус круга", Title)
    If Temp <> "" Then
        Radius = CSng(Temp)
        CircleArea = Pi * (Radius * Radius)
        MsgBox CircleArea, , Title
    Else: MsgBox "Вы отказались от ввода данных!"
    End If
End Sub

В общем случае функция InputBox имеет следующий синтаксис:

stringvar=InputBox (Prompt [, Title] [, Default] [, XPos] [, YPos] [, HelpFile] [, Context])

где stringvar - любая переменная, сохраняющая строку;

Prompt - любое строковое выражение, содержащее информацию, выводимую в диалоговом окне (единственный обязательный аргумент этой функции);

Title - строка для заголовка диалогового окна;

Default - строковое выражение, использующееся как значение по умолчанию для пользовательского ввода;

XPos - горизонтальное расстояние от левого края окна;

YPos - вертикальное расстояние от верхнего края окна;

HelpFile - строковое выражение, содержащее имя справочного файла Windows;

Context - численное выражение, указывающее раздел в справочном файле, относящийся к отображаемому диалоговому окну.