- •Часть 1. Макросы и язык программирования vba. Среда редактора visual basic
- •Часть 2. Редактирование простых макросов
- •2U Object Browser
- •Import File
- •Часть 3. Типы данных, переменные и константы. Выражения в visual basic. Использование функций visual basic
- •Часть 4. Изменения порядка выполнения операторов в vba
- •Часть 5. Повторение действий в vba: циклы
- •I Statements
- •Часть 6. Массивы. Объекты vba для ввода-вывода
- •Часть 7. Создание и использование функций и функций-процедур
- •Часть 8. Элементы диалоговых окон
- •' Мним ' ' IIIIIIIII ' тГмшмГ ' ' ниши' |( ' .... Jwli ....
- •Часть 1. Макросы и язык программирования vba. Среда редактора Visual
' Мним ' ' IIIIIIIII ' тГмшмГ ' ' ниши' |( ' .... Jwli ....
Рис. 28
ь для надписи в нашей программе-примере измените лишь два свойства – Name (Имя) на lblNow и Caption (Заголовок) – просто удалите значение свойства. Для управления свойствами предназначено окно свойств. Чтобы сделать это, найдите свойство Name в самом верху списка свойств (оно представлено как (Name)), – это единственное из свойств, заключенное в скобки. Двойным щелчком в правом столбце строки этого свойства выберите его, а затем впечатайте новое имя. Затем опуститесь по списку ниже и найдите свойство Caption. Здесь просто удалите значение свойства;
ь щелкните в окне формы, чтобы сделать его активным снова. При этом панель элементов управления, которая исчезла, когда вы перешли в окно свойств,
118
возникнет снова;
измените значение свойства Caption на Моя первая форма;
щелкните на той пиктограмме в панели элементов управления, на которой изображена кнопка (рис. 27);
начав немного левее середины формы и нажав левую кнопку мыши, перетащите указатель по диагонали вниз, чтобы создать кнопку;
измените значение свойства (Name) на OKButton. Напомню снова, что поскольку при создании программного кода вам придется ссылаться на кнопку по ее имени, такое имя кнопки напомнит вам о ее назначении (она получает ОК и закрывает окно);
измените значение свойства Caption на ОК. Этот текст увидит пользователь на кнопке во время выполнения вашей программы;
вызовите окно программного кода формы (двойной щелчок по форме, либо View/Code, либо нажать F7, либо при помощи контекстного меню);
дважды щелкните по кнопки ОК;
* в появившемся при этом окне программного кода должна уже присутствовать заготовка процедуры:
1 Private Sub OKButton Click() 2
3 End Sub
• запишите после заголовка процедуры следующий программный код
2 Unload Me
оператор Unload убирает указанный объект из памяти. Здесь это объект с именем Me, имеющим в VBA специальный смысл. В данном случае оно означает форму и весь ее программный код;
^напечатайте еще три строки кода:
1 Private Sub UserForm Activate()
Dim Quote As String
Quote = "Не повторяется такое никогда:"
lblNow.Caption = Quote & Format(Now, "dddddd, hh ч. mm мин.")
5 End Sub
Задание 5. Создайте форму, выводящую значения функции y = *1+ ex .
Для этого:
• выберите команду Insert/UserForm (Вставка/UserForm);
* расположим на форме следующие элементы управления (рис. 29):
. . ^^^"-TextBox1
J i- - ■
TextBox2
Рис. 29 119
ь форма создана, функция каждого элемента управления известна. Для написания кода программы, связанного с пользовательской формой, достаточно дважды щелкнуть, например, кнопку CommandButton1. Откроется редактор кода на листе модуля UserForm3. Более того, он откроется на том месте, где программируются действия, связанные с элементом управления, который был дважды нажат. Если код еще не набран, то при открытии редактора кода появятся инструкции заголовка и окончания процедуры, которая будет связана с элементом управления. Напечатайте код формы (листинг 22):
Листинг 22 – Код формы UserForm3
1 Private Sub CommandButton1_Click()
2 Dim x As Double, y As Double 3
4 If Not IsNumeric(TextBox1.Text) Then 'Проверка является ли введенное
5 'значение числом
6 MsgBox "Аргумент должен быть числом", _
7 vbExclamation 'Вывод окна сообщения
TextBox1.SetFocus 'Фокус (курсор) устанавливается на поле TextBox1
Exit Sub 'Досрочный выход из процедуры
End If
x = CDbl(TextBox1.Text) 'При считывании числа из поля ввода при
'помощи функции CDbl строковый тип, возвращаемый
'свойством Text, преобразуется в числовой
y = Sin(x)/(1+Exp(x))
TextBox2.Text = CStr(y) 'Для вывода результата в поле, переводим число
16 'в строковый формат при помощи функции CStr
End Sub
Private Sub UserForm_Initialize() 'Процедура UserForm_Initialize конструирует
19 'форму до ее загрузки
20 Us erFor m 3. Capt i on = "Фун кция y=s i n(x)/(1+e xp( x))" ' Инструкция устанавливает
21 'текст, отображаемый в строке заголовка формы
Label1.Caption = "Аргумент" 'Инструкции задают видимые надписи
Label2.Caption = "Значение функции" 'для объектов
CommandButton1.Caption = "OK"
TextBox2.Enabled = False 'Инструкция делает TextBox2 недоступным
26 'для пользователя
27 End Sub
Задание 6. Создайте форму, вычисляющую сложение вычитание умножение и деление двух чисел.
Для этого:
ь выберите команду Insert/UserForm (Вставка/UserForm);
ь расположим на форме следующие элементы управления (рис. 30):
120
TextBox1
TextBox2
ь форма создана, функция каждого элемента управления известна (имена: Сложение – OptionButton1, Вычитание – OptionButton2, Умножение – OptionButton3, Деление – OptionButton4, Старт – Start, Label2 – Label2; Результат и Label2 – Font: начертание жирный, размер 10). Напечатайте код формы (листинг 23):
ь Листинг 23 – Код формы UserForm4
1 Private Sub Start_Click()
2 If OptionButton1 = True Then
3 Label2.Caption = CStr(CDbl(TextBox1.Text) + CDbl(TextBox2.Text))
4 ElseIf OptionButton2 = True Then
5 Label2.Caption = CStr(CDbl(TextBox1.Text) – CDbl(TextBox2.Text))
6 ElseIf OptionButton3 = True Then
7 Label2.Caption = CStr(CDbl(TextBox1.Text) * CDbl(TextBox2.Text))
8 ElseIf OptionButton4 = True Then
9 If TextBox2.Text = "0" Then
MsgBox "Деление на ноль недопустимо"
Exit Sub
End If
Label2.Caption = Format(CStr(CDbl(TextBox1.Text) / _
14 CDbl(TextBox2.Text)), "0.00")
15 Else
16 MsgBox "Укажите арифметическое действие"
17 End If
18 End Sub
121
Литература
Программирование в пакетах MS Office: учеб. пособие / С.В. Назаров, П.П. Мельников, Л.П. Смольников и др.; под ред. С.В. Назарова. – М.: Финансы и статистика, 2007. – 656 с.: ил.
Бернд Вайланд. Visual Basic 6 для детей: Пер. с нем. – М.: АО “Интерэксперт”, 2002. – 240 с.
Мэтью Харрис. Освой самостоятельно программирование для Microsoft Excel 2000 за 21 день.: Пер. с англ.: Уч. пос. – М.: Издательский дом “Вильямс”, 2000. – 880 с.: ил. – Парал. тит. англ.
Стив Каммингс. VBA для “чайников”.: Пер. с англ.: – М.: Издательский дом “Вильямс”, 2000. – 384 с.: ил. – Парал. тит. англ.
К. Гетц, М. Джилберт. Программирование в Microsoft Office. Полное руководство по VBA: пер. с англ. – К.: Издательская группа BHV, 2000. – 768 с.
122
СОДЕРЖАНИЕ
Введение 3