Офисное программирование
Добавить в закладки К обложке
- Введение - Страница 1
- Часть IОсноные седения о программироании на VBA - Страница 2
- 1.2. Редактор VBA. Первое знакомство - Страница 7
- 1.3. Изменение порядка выполнения операторов - Страница 9
- Глава 2Объект UserForm - Страница 14
- 2.2. Использование форм - Страница 16
- Глава 3Массивы, процедуры, функции - Страница 20
- 3.2. Работа с различными типами данных - Страница 24
- 3.3. Процедуры и функции VBA - Страница 26
- Глава 4Создание VBA-программ - Страница 31
- 4.2. Элементы управления ComboBox, OptionButton и Frame - Страница 34
- 4.3. Элементы управления MultiPage, ScrollBar, SpinButton[2] - Страница 37
- 4.4. Объект DataObject[3] - Страница 41
- Часть IIПрограммирование на VBA в Word - Страница 44
- 5.2. Форматирование документа - Страница 48
- Глава 6Автоматизация стандартных документов - Страница 52
- 6.2. Создание и автоматическое заполнение бланков стандартных документов - Страница 55
- Часть IIIПрограммирование на VBA в Excel - Страница 58
- 7.2. Использование возможностей VBA при непосредственных расчетах - Страница 63
- 7.3. Финансовые функции - Страница 67
- Глава 8Построение диаграмм средстами VBA - Страница 69
- 8.2. Построение круговых диаграмм и гистограмм - Страница 72
- Глава 9Базы данных в Excel - Страница 73
- 9.2. Конструирование пользовательского интерфейса - Страница 76
- Глава 10Создание собственного головного меню[9] - Страница 78
- Литература - Страница 83
Чтобы использовать написанную подпрограмму или функцию, ее нужно вызвать. Вызов процедуры-подпрограммы отличается от вызова процедуры-функции.
Обычно подпрограмма вызывается из другой подпрограммы или функции с помощью специального оператора VBA. Если она имеет аргументы, ей передается список фактических параметров.
Оператор вызова подпрограммы может использоваться в двух формах:
<имя Процедуры><список фактических параметров>
или
Call <имя Процедуры> (<список фактических параметров>).
В первом случае список фактических параметров задается без скобок, во втором – использование скобок обязательно. Но всегда список фактических параметров должен полностью соответствовать списку аргументов, заданному в объявлении подпрограммы. Все фактические параметры для обязательных аргументов должны быть перечислены в том порядке, в каком они присутствуют в описании подпрограммы, после чего могут идти параметры для необязательных аргументов.
Вызов функции имеет следующий вид:
<имя переменной>=<имя функции>(<список фактических параметров>).
Примечание. Список фактических параметров при вызове функции должен обязательно заключаться в кавычки.
Например, вызов объявленной в вышеприведенном примере функции SummaVar может выглядеть следующим образом:
Dim intShelfs (I To 30) As Integer
Dim intS As Integer
Init intShelfs инициируем массив intShelfs
intS = SummaVar(1,2,3,4,5,6,7,8,9)'суммируем целые числа
Пример 14. Создать программу, работающую с процедурами и функцией, параметрами которых являются значения, вводимые в текстовые поля формы. После нажатия кнопки Счет на форме основная программа вызывает процедуры и функцию и выводит полученные результаты в три соответствующие метки.
Процедуры и функция выполняют следующие действия:
1) первая процедура производит суммирование двух первых введенных значений a и b;
2) вторая процедура производит умножение третьего и четвертого введенных значений c и d;
3) функция вычисляет выражение a+b-c*d.
Технология выполнения
1. Откройте приложение Word, сохраните документ и перейдите в редактор VBA.
2. Создайте форму (рис. 30).
3. Пропишите обработчик события кнопки Счет.
При создании данной программы необходимо обратить внимание на следующие моменты. В начале программы создаются глобальные переменные, область видимости которых распространяется на все создаваемые процедуры, функцию и основной блок программы.
При создании процедур происходит считывание информации с текстовых полей. Так как вся информация, введенная в текстовые поля, априори считается текстовой, то необходимо перевести данные строковые переменные в числовые. Для чего используется функция преобразования Val. Функция работает с уже вычисленными значениями в процедурах, поэтому в теле функции вызываются процедуры, точнее их результат.
Основной блок программы также вызывает процедуры и результат созданной функции. Обратите внимание на различие написания вызова значений процедур и функции.

Рис. 30. Форма примера 14 в режиме конструктора и в рабочем состоянии
Листинг примера 14
Dim a, b, c, d, k, m, h As Integer
Sub summ()
a = Val(TextBox1.Text)
b = Val(TextBox2.Text)
k = a + b
End Sub
Sub umn()
c = Val(TextBox3.Text)
d = Val(TextBox4.Text)
m = c * d
End Sub
Function prim() As Integer
Call summ
Call umn
prim = k – m
End Function
Private Sub CommandButton1_Click()
Call summ
Call umn
' переменные a и b являются глобальными для запуска функции prim, где k, m являются локальными переменными в соответствующих процедурах
h = prim(a, b)
Label8.Caption = «сумма a + b =» & k
Label9.Caption = «произведение c * d =» & m
Label10.Caption = "значение функции a+b-c*d= " & h
End Sub
4. Откомпилируйте программу.
5. Запустите форму на выполнение.
Пример 15. Создать программу, которая, используя данные, считанные из текстовых полей формы, выполняет вычисление значений двух выражений: y = sin(a + b) + 5 и z = tg(c + + 3) – cos(3 * d), где a, b, c, d – значения переменных, введенных в соответствующие текстовые поля (рис. 31). Данные значения y и z вычисляются в соответствующих процедурах (процедуре) или функциях. Основной блок программы сравнивает полученные значения, и об этом выдается сообщение на форму.