- •Міністерство освіти і науки україни
- •Програмування мовою
- •У середовищі Microsoft Excel
- •1 Введення
- •2 Об'єкти Excel, їхньої властивості і методи.
- •2.1 Об'єкт Workbook і сімейство Workbooks
- •2.2 Об'єкт Worksheet і сімейство Worksheets
- •Count - повертає кількість об'єктів у наборі; у прикладі перемінної k присвоюється значення, рівне числу рядків діапазону a1:d4
- •Приклад макроса
- •3 Мова програмування vba
- •3.1 Типи перемінних, оголошення перемінних, область дії перемінних
- •Оператор присвоювання
- •Стандартні діалогові вікна
- •Умовний оператор і оператор вибору.
- •3.5 Оператори циклу
- •Оператор циклу по сімейству об'єктів.
- •4 Створення функцій і процедур користувача
- •5 Створення форм та їх використання
- •5.1 Елементи керування у формах, їхні властивості, методи, події.
- •5.2 Приклади створення форм
- •Література
5.2 Приклади створення форм
Приклад 5.2. Створимо просту форму, що вводить два числа, дозволяє вибрати арифметичну операцію, яку необхідно зробити над числами, і виводить результат.
На малюнку 8 приведене вікно форми в режимі конструктора, що містить:
три текстових поля TextBox1, TextBox2, TextBox3 для введення двох чисел і виведення результату;
групу перемикачів OptionButton1, OptionButton2, OptionButton3, OptionButton4 для вибору операції; властивості Caption кожного перемикача замінені знаками операцій;
командну кнопку CommandButton1для запуску процедури обчислення; властивість Caption кнопки замінено словом «Обчислити»;
напису біля текстових полів, що пояснюють їхнє призначення.
К
рім
того, на екрані видно вікно проекту,
вікно властивостей поля TextBox3, вікно
елементів керування.
Мал. 8. Конструювання форми приклада 5.2.
З кнопкою CommandButton1 пов'язана процедура, що починає працювати при щиголі мишею на кнопці. Щоб написати текст процедури, необхідно двічі клацнути на кнопці при конструюванні форми. Відчиняється вікно коду, у якому записуємо приведений нижче текст. Заголовок процедури і її ім'я будуються автоматично, тому що ім'я зв'язується з ім'ям об'єкта і подією, за якою запускається процедура.
Private Sub CommandButton1_Click()
Dim x As Single, y As Single, r As Single
If IsNumeric(TextBox1. Value) Then
x = TextBox1. Text
Else
MsgBox "Введіть перше число"
TextBox1. SetFocus
End If
If IsNumeric(TextBox2. Value) Then
y = TextBox2. Text
Else
MsgBox "Введіть друге число"
TextBox2. SetFocus
End If
If OptionButton1. Value Then
z = x + y
TextBox3. Text = z
End If
If OptionButton2. Value Then
z = x - y
TextBox3. Text = z
End If
If OptionButton3. Value Then
z = x * y
TextBox3. Text = z
End If
If OptionButton4. Value Then
If y = 0 Then
MsgBox "Неприпустиме значення знаменника"
TextBox2. SetFocus
Else
z = x / y
TextBox3. Text = z
End If
End If
End Sub
П
риклад
5.3.
Створимо
форму, що буде добавляти запис в приведений
на мал. 9 список, розташований на листі
Excel.
Мал. 9. Список клієнтів готеля.
Збоку списку на листі Excel розташований впроваджений об'єкт - командна кнопка з ім'ям CommandButton1, що викликає на екран діалогове вікно - форму з ім'ям UserForm1. У властивості Caption командної кнопки записаний текст «Реєстрація клієнта», у властивості Font зазначений розмір 10.
Щоб упровадити кнопку на лист, виконайте такі дії:
Натисніть кнопку “Конструктор” на панелі інструментів Visual Basic.
Натисніть кнопку «Елементи керування» на панелі інструментів Visual Basic.
Клацніть мишею на елементі керування Кнопка, а потім клацніть на листі Excel. На листі з'явиться кнопка з написом CommandButton1.
Щиголем правої кнопки миші викликайте контекстне меню кнопки і відчиніть вікно властивостей. Змініть властивості Caption і Font як зазначено вище.
Щоб зв'язати з подією - щиголь миші на кнопці - процедуру виклику форми, двічі клацніть на кнопці. Відчиниться вікно модуля, у котрому вже побудований заголовок процедури за таким правилом: спочатку вказується ім'я об'єкта, а потім після символу “ _ ” -ім'я події, при якому визивається процедура. Запишемо такий текст:
Sub CommandButton1_Click()
UserForm1. Show ‘активизація форми з ім'ям UserForm1
End Sub
Тепер перейдемо до конструювання форми для додавання даних про нового клієнта в список. Для цього відчиніть вікно редактора Visual Basic, вставте новий об'єкт UserForm і розмістіть на ньому елементи керування, як показано на мал. 10.
У формі розташовані такі елементи керування:
Текстове поле TextBox1, розташоване поруч із написом «Прізвище». Стандартні властивості цього поля не змінювалися при конструюванні.
Текстове поле TextBox2 для введення імені і по батькові клієнта.
Група перемикачів: OptionButton1, у якого властивість Caption замінена на слово «чоловік», і OptionButton2, у якого властивість Caption замінена на слово «жінка».
Група прапорців: CheckBox1, у якого властивість Caption замінена на «Оплачено», і CheckBox2, у якого властивість Caption замінена на «Паспорт зданий».
Список , що розкривається , ComboBox1. У цього об'єкта була змінена властивість RowSource, для якого зазначений діапазон
клітин активного листа, що містить список усіх типів номерів готеля: М3:М6. У цих клітинах утримуються такі дані:
-
Клітина
Вміст клітини
М3
Люкс
М4
Одномісний
М5
Двомісний
М6
Тримісний
Мал. 10. Діалогове вікно користувача - форма UserForm1 у режимі конструювання.
Текстове поле TextBox3 для відображення значення лічильника SpinButton1.
Лічильник SpinButton1. Властивість Value цього елемента керування змінюється на 1 при кожному щиголі на одну зі стрілок.
Кнопка CommandButton1, властивість Caption цієї кнопки змінено на «ОК». З кнопкою пов'язана процедура занесення даних про клієнта в перший вільний рядок, що знаходиться за списком. Текст процедури:
Private Sub CommandButton1_Click()
Dim ks As Integer
Range("A1"). Select
ks = ActiveCell. CurrentRegion. Rows. Count ' Підрахунок кількості
‘зайнятих рядків у списку
ActiveCell. Offset(ks, 0). Select 'Активизація першого
‘вільного рядка списку
ActiveCell. Value = TextBox1. Text ‘ в список пишемо прізвище
ActiveCell. Offset(0, 1). Value = TextBox2. Text ‘в сусідню клітину
‘пишемо ім'я і по батькові
If OptionButton1. Value = True Then ‘якщо відзначений перший
ActiveCell. Offset(0, 2). Value = "чоловік" ‘перемикач, то
Else
ActiveCell. Offset(0, 2). Value = "дружин"
End If
ActiveCell. Offset(0, 3). Value = ComboBox1. Value ‘Пишемо тип
‘номера, обраний із списку
If CheckBox1. Value = True Then ‘Якщо відзначений прапорець
‘«Оплачено», то
ActiveCell. Offset(0, 4). Value = "да" ‘записуємо слово «да»
Else
ActiveCell. Offset(0, 4). Value = "ні"
End If
If CheckBox2. Value = True Then ‘Якщо відзначений прапорець
‘«Паспорт зданий», то
ActiveCell. Offset(0, 5). Value = "да" ‘записуємо слово
‘«да» у п'ятий стовпчик
Else
ActiveCell. Offset(0, 5). Value = "ні"
End If
ActiveCell. Offset(0, 6). Value = SpinButton1. Value ‘ шостий
‘стовбчик пишемо значення лічильника
End Sub
Командна кнопка CommandButton2, у якої властивість Caption змінена на слово «Да». З цією кнопкою пов'язана процедура, що очищає всі елементи керування у формі, підготовлюючи їх для введення даних про нового клієнта. Текст процедури:
Private Sub CommandButton2_Click()
TextBox1. Text = ""
TextBox2. Text = ""
TextBox3. Text = ""
CheckBox1. Value = False
CheckBox2. Value = False
SpinButton1. Value = 0
End Sub
Така процедура призначена для відображення значення лічильника в текстовому полі TextBox3:
Private Sub SpinButton1_Change()
TextBox3. Value = SpinButton1. Value
End Sub
