![](/user_photo/2706_HbeT2.jpg)
- •Vba – (Visual Basic for Application)
- •Структура редактора vba
- •End Sub
- •Зв’язок з даними, розміщеними на робочому листі Microsoft Excel
- •End Sub
- •Таблиця кодів кнопок
- •Лабораторна робота №9
- •Основи мови vba
- •Оператори мови vba
- •Розрахунок контрольного прикладу в Excel
- •Розрахунок контрольного прикладу в Excel
- •Теоретичні відомості та основні поняття об’єктно-орієнтованого та візуального програмування
- •Задача про обмін валют
- •Циклічні алгоритми
- •Знаходження суми та добутку
Оператори мови vba
Оператор присвоєння (завжди включає знак = ).
Синтаксис:
Константа/Змінна = Вираз.
Дія оператора: виконується вираз, який написаний справа від знаку =, та його результат присвоюється змінній або константі, який написано зліва від знаку =.
Приклад: а=2
а=а+10
2. Оператор умовного переходу (задає виконання групи інструкцій в залежності від значення виразу).
2.1.Синтаксис:
If <умова> then <інструкція> [else інструкція_ else].
2.2. Синтаксис:
if <умова1> then
<інструкція1>
elseif <умова2> then
<інструкція2>
…………………
else
<інструкція_else>
end if
Інструкція OPTION EXPLICIT – вимагає обов’язкового об’явлення типів змінних. Застосовується в загальній області проекту.
Алгоритм та способи його зображення
Алгоритм − це чітка послідовність правил, виконання яких забезпечує розв’язок поставленої задачі.
Спосіб зображення алгоритму: графічний (блок схема), словесний, комбінований.
Графічно алгоритм зображають у вигляді блок-схеми. Основні блоки блок-схеми:
−блок
початку і кінця алгоритму
−блок
вводу-виводу інформації (inputbox, msgbox)
−блок
виконання (оператор присвоєння)
−блок
умовного переходу
Задачі на розгалуження
Мета: навчитись розв’язувати задачі на розгалуження.
Розглядаємо 2 типи задач:
1 – визначена вся числова вісь
2 – визначена не вся числова вісь (тобто на деяких ділянках числової осі функція не визначена).
Приклади
1.Скласти блок схему алгоритму наступної задачі та написати програму мовою VBA. (в даному прикладі визначена вся числова вісь).
Розв’язок задачі: зображаємо числову вісь, відкладаємо відомі точки на числовій осі, а саме точка 1. Для будь-якого числа, яке <=1 змінна y обчислюється за першою формулою, а для будь-якого числа, яке >1 змінна у обчислюється за другою формулою.
Зобразимо блок-схему задачі:
Option Explicit
Public Sub jhk()
Open "a:\rez1.txt" For Output As #1’ – інструкція для відкриття файлу послідовного доступу для запису інформації
Dim z As Single, y As Double, f As Integer
Do
z = CSng(InputBox("Введіть значення z"))
If z < 1 Then
y = Cos(z + Abs(Log(z) / Log(10))): f = 1
Else
y = z - 2 ^ z: f = 2
End If
MsgBox "Результат y=" + Format(y, "#0.00#") + Chr(13) + "формула розрахунку" + Str(f) + " при z=" + Str(z)
Print #1, "Результат y="; Format(y, "#0.00#"), "формула ротзрахунку"; f, " при z="; z’- запис результатів у файл
Loop While MsgBox("Рахувати ще?", vbYesNo) = vbYes
Close #1’ – закриття файлу для запису інформації
End Sub
Розрахунок контрольного прикладу в Excel
2.Скласти блок схему алгоритму наступної задачі та написати програму мовою VBA. (в даному прикладі визначена не вся числова вісь).
Розв’язок задачі:
Зображаємо числову вісь, відкладаємо відомі точки на числовій осі, а саме точки 0, 5, 3.5
Аналізуємо числову вісь.
t=0 – не має розв’язку
t=3.5 – не має розв’язку
t>5– не має розв’язку
t=-1- обчислення u – за формулою 1
t=4 - обчислення u – за формулою 2
Всього задача має 5 фіксованих розв’язків.
Хід розв’язку: відрізаємо від числової осі ті точки та інтервали, де задача не має розв’язку, та зводимо її до задачі 1, де визначена вся числова вісь.
Нижче наводимо блок-схему алгоритму та програму мовою VBA.
Option Explicit
Public Sub jhk()
Open "a:\rez2.txt" For Output As #1
Dim t As Single, u As Double, f As Integer
Do
t = CSng(InputBox("Введіть значення t"))
If t = 0 Or t > 5 Or t = 3.5 Then
MsgBox "При t=" + Format(t, "#0.0#") + " Немає розв’язку"
Print #1, "При t="; Format(t, "#0.0#"); " Немає розв’язку"
Else
If t < 0 Then
u = 1.3 * t - Sin(t): f = 1
Else
u = Log(t + Sqr(t)) / Log(10): f = 2
End If
MsgBox "Розв’язок u=" + Format(u, "#0.00#") + Chr(13) + "Отримали за формулою" + Str(f) _
+ " При t=" + Str(t)
Print #1, "Розв’язок u="; Format(u, "#0.00#"), "отримали за формулою"; f _
, " При t="; t
End If
Loop While MsgBox("Рахувати ще?", vbYesNo) = vbYes
Close #1
End Sub