Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
4 Лекція VBA.doc
Скачиваний:
26
Добавлен:
04.02.2016
Размер:
876.03 Кб
Скачать

Оператори мови vba

  1. Оператор присвоєння (завжди включає знак = ).

Синтаксис:

Константа/Змінна = Вираз.

Дія оператора: виконується вираз, який написаний справа від знаку =, та його результат присвоюється змінній або константі, який написано зліва від знаку =.

Приклад: а=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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]