
- •Основи офісного програмування
- •Створення процедур і функцій користувача
- •Методичні рекомендації до виконання завдання № 1
- •Використання інструкцій vba
- •Методичні рекомендації до виконання завдання № 2
- •Технологія виконання завдання
- •Створення інтерфейсу користувача
- •Методичні рекомендації до виконання завдання №3
- •Технологія виконання завдання
Методичні рекомендації до виконання завдання № 1
Тема: Створення процедур і функцій користувача
Ціль: Одержати практичні навички створення функцій користувача в середовищі VBA для додатка MS Exсel
В середовищі VBA розробити функцію:
Створити в VBA модуль користувача.
В середовищі VBA розробити функцію відповідно до завдання.
Перейти на листок «Функції».
Перевірити роботу функції:
Викликати Мастер функции.
В діалоговому вікні Мастера функций (Шаг 1) в полі Категория вибрати категорію Определенные пользователем.
У списку Выберите функцию вибрати ім'я розробленої функції. Натиснути ОК.
В діалоговому вікні Аргументы функции ввести аргументи функції. Натиснути ОК.
Варіанти завдань приведені в таблиці 1.5.
Таблиця 1.5
Завдання
№ вар. |
Завдання |
№ вар. |
Завдання |
№ вар. |
Завдання |
№ вар. |
Завдання |
1 |
F= x+y3 |
7 |
F=a + c*x2 |
13 |
F= a*cos x |
19 |
F=xy |
2 |
F=(x+y)3 |
8 |
F=a*sin x |
14 |
F=a3+3 |
20 |
F= xyz |
3 |
F=a +b*x |
9 |
F=3,5 + 7*x |
15 |
F= |
21 |
F= x3+1 |
4 |
F= |
10 |
F=3,5 – 2*x2 |
16 |
F=y + |
22 |
F=1 +
|
5 |
F=x + |
11 |
F=(x-1)*x |
17 |
F= a3 _
|
2 |
F= |
6 |
F= |
12 |
F= x2 + 1 |
18 |
F= x2 + |
24 |
F= - y |
Використання інструкцій vba
Під конструкціями управління звичайно розуміють оператори (інструкції) і убудовані функції мови, за допомогою яких здійснюється управління ходом виконання програми. У VBA використовуються такі основні структури управління:
If…Then…Else
Select Case
For…Next
Do…Loop...
Нижче будуть наведені приклади синтаксису цих структур.
Увага! Квадратні дужки означають необов'язковість використання цих елементів, тобто вони можуть бути відсутні.
Умовний оператор Іf...Then...Else.
Умовне виконання групи операторів у залежності від значення вираження. Синтаксис:
Проста лінійна форма:
If умова Then [оператор_1] [Else оператор_2]
Оператор_1 виконується, якщо умова істина, у противному випадку виконується оператор_2.
Умова це вираження логічного типу. Вираження може бути простим і складним. У першому випадку використовуються логічні відносини, перелік яких приведений у таблиці 1.6. Складні логічні вираження виходять із простих за допомогою використання логічних операцій, перелік яких приведений у таблиці 1.7 і, при необхідності, круглих дужок.
Блочна форма:
If умова1 Then
[блок_ операторів1]
[ElseIf умова_2 Then
[блок_ операторів2]
[ElseIf умова_3 Then
[блок_ операторів_3]
...
[Else
[блок_ операторів]]
End If
Блок операторів_i виконується, якщо умова_ І є істиною, у противному випадку виконується блок_ операторів.
Оператори Else і Elseіf є необов'язковими. Можна використовувати стільки операторів Elseіf скільки потрібно в блоці Іf, але вони ніколи не можуть знаходитися після оператора Else. Блоки операторів Іf можуть бути вкладеними, тобто містити в собі інші Іf блоки.
Таблиця 1.6
Логічні відносини
Операція |
Найменування |
Вираження |
Результат |
= |
дорівнює |
A=B |
True, якщо A дорівнює B |
<> |
не дорівнює |
A<>B |
True якщо A не дорівнює B |
> |
більше |
A>B |
True якщо A більше B |
< |
меньше |
A<B |
True якщо A менше B |
>= |
більше або дорівнює |
A>=B |
True якщо A більше або дорівнює B |
<= |
меньше або дорівнює |
A<=B |
True якщо A менше, або дорівнює B |
Таблиця 1.7
Логічні операцій
Операція |
Найменування |
Вираження |
A |
B |
Результат |
Not |
Логічне заперечення |
Not A |
False True |
|
True False |
And |
Логічне И |
A And B |
True True False False |
True False True False |
True False False False |
Or |
Логічне ИЛИ |
A Or B |
True True False False |
True False True False |
True True True False |
Оператор Select Case.
Виконує одну з кілька груп операторів у залежності від значення вираження, що перевіряється.
Синтаксис:
Select Case вираження, що перевіряється
[Case список виражень-n
[оператори-n]] ...
[Case Else
[else оператори]]
End Select
Приклад використання.
Написати функцію користувача, що обчислює значення функції F в залежності від значення аргументу X:
1) Конструкція If…Then…Else
FunctionF1_If(X)
IfX>=0AndX<=1Then
F1_If=Sin(1+X+X^2)^4/Cos(10*X+3)
ElseIfX>=2AndX<=5OrX>10Then
F1_If=Sqr(Abs(X^3-5*X))
ElseIfX>=6AndX<=8Then
F1_If=(X^2+4)/(X^2-4)
Else
F1_If=0
EndIf
EndFunction
2)Конструкція Select Case
Function F1_Case(X)
Select Case X
Case 0 To 1
F2_Case = Sin(1 + X + X ^ 2) ^ 4 / Cos(10 * X + 3)
Case 2 To 5, Is>10
F2_Case = Sqr(Abs(X ^ 3 - 5 * X))
Case 6 To 8
F2_Case = (X ^ 2 + 4) / (X ^ 2 - 4)
Case Else
F2_Case = 0
End Select
End Function
Оператори циклу.
Для виконання якого-небудь оператора, або блоку операторів, декілька разів використовуються оператори циклу. Існують 2 види циклів:
цикли, що виконуються заздалегідь задану кількість разів, у VBA для цього використовується оператор For ... Next;
цикли, що виконуються доти поки не буде виконана яка-небудь умова - оператор Do ... Loop.
Є різновиди кожного типу циклів.
Нижче наведено синтаксис основних видів операторів циклу.
Оператор циклу For ... Next.
Повторює блок операторів задану кількість разів.
Синтаксис: For лічильник = початок To кінець [Step крок]
[оператори]
[Exit For]
[оператори]
Next [лічильник], де:
лічильник - обов'язковий; числова змінна, котра використовується як лічильник циклу;
початок - обов'язковий;. початкове значення лічильника;
кінець - обов'язковий; кінцеве значення лічильника;
крок - необов'язковий; значення, на яке змінюється лічильник при кожному виконанні циклу. За замовчуванням дорівнює одиниці.
оператори – оператори; один або більш операторів між For and Next, що виконуються задану кількість разів.
Оператор циклу Do ... Loop.
Повторює блок операторів, поки умова істина - Whіle, або доти, коли умова стане істинною - Untіl.
Синтаксис: Do [{While | Until} умова]
[оператори]
[Exit Do]
[оператори]
Loop
Приклад використання різних типів операторів циклу. Обчислити значення функції F (дивиться попередній приклад) для декількох значень аргументу X, що знаходяться на листі Excel у стовпці A, починаючи з другого рядка, тобто A2 - це адреса першого значення аргументу.
Пояснення.
У VBA діапазон осередків "A:A" означає стовпець. У російськомовній версії Excel функція СЧЕТЗ підраховує кількість заповнених комірок у виділеному діапазоні. В англомовній версії це функція Count. Таким чином, функція Application.Count(Range("A:A")) підраховує кількість не порожніх (заповнених) комірок у стовпці A.
Оператор цикла For ... Next
Function F1_If(X)
...........................
End Function
Sub For_Next()
Dim n As Integer
n = Application.CountA(Range("A:A"))
For r = 2 To n
X = Cells(r, 1).Value
Cells(r, 2).Value = F1_If(X)
Next
End Sub
2) Оператори циклу Do … Loop
а) конструкція Do While... Loop
Function F1_If(X)
...........................
n = Application.CountA(Range("A:A"))
r = 2
Do While r <= n
X = Cells(r, 1).Value
Cells(r, 2).Value = F1_If(X)
r = r + 1
Loop
End Sub
б) конструкція Do Until... Loop
Function F1_If(X)
...........................
End Function
Sub Do_Until()
n = Application.CountA(Range("A:A"))
r = 2
Do Until r > n
X = Cells(r, 1).Value
Cells(r, 2).Value = F1_If(X)
r = r + 1
Loop
End Sub