- •Лабораторна робота 1 Ієрархічна структура об'єктів vba. Властивості і методи
- •Продовження табл. 2
- •Закінчення табл. 2
- •Лабораторна робота 2 Організація програм у vba. Редактор Visual Basic
- •Лабораторна робота 3 Типи змінних. Тип даних, обумовлений користувачем. Змінна типу Оbject. Константи.
- •Лабораторна робота 4 Область дії змінної. Персистенція
- •Лабораторна робота 5 Оператори мови vba
- •Лабораторна робота 6 Масиви. Опис і створення масивів. Динамічні масиви
- •Лабораторна робота 7 Масив і діапазон робочого листа. Функції для роботи з масивами
- •Лабораторна робота 8 Убудовані функції vba. Функції користувача
- •Процедура повинна:
- •Лабораторна робота 9 Використання If і Select Case у функціях користувача
- •Лабораторна робота 10 Форма користувача
- •Лабораторна робота 11 Елементи керування
- •Лабораторна робота 12 Робота зі списками
- •Лабораторна робота 13 Розв’язання рівнянь методом послідовних наближень
- •Лабораторна робота 14 Використання методу ChartWizard і вбудованих математичних функцій для виконання фінансових розрахунків
- •Задачі для самостійного розв’язання
- •Список рекомендованої літератури Основна
- •Додаткова
Лабораторна робота 4 Область дії змінної. Персистенція
Область дії (видимості) змінної має 3 рівні:
Рівень процедури
Рівень модуля
Рівень проекту.
Змінні рівня процедури описуються в тілі процедури з ключовим словом dim і розпізнаються тільки в цій процедурі, тому що втрачають своє значення після інструкції end sub.
Приклад 1
public sub pr1 ()
dim B1 as integer
B1 = 5555
msgbox (“b1 = “ & b1)
'вікно повідомлення про значення локальної змінної b1
proc2
end sub
public sub proc2 ()
msgbox b1
end sub
Запустіть процедуру pr1 і опишіть результати. Запустіть proc2 і поясніть результати її виконання.
Змінні рівня модуля описуються з ключовим словом dim в області опису модуля, тобто до опису процедур і функцій і доступні будь-якій процедурі модуля.
Доповнимо попередній приклад:
Приклад 2
dim B2 as string
public sub pr_1 ()
dim B1 as integer
B1 = 5555
msgbox “b1=” & b1
B2 = “Іди”
msgbox “b2=” & b2
proc_2 'процедура pr_1 викликає proc_2
end sub
public sub proc_2 ()
msgbox b1
msgbox b2
end sub
Запустіть процедуру pr_1 і опишіть результати і всі діалогові вікна, що з'явилися.
Змінні рівня модуля, оголошені за допомогою ключового слова Public, доступні для всіх процедур і модулів проекту й називаються відкритими. Усі змінні рівня проекту зручно описувати в окремому стандартному модулі.
Приклад 3
Опишемо B3 як змінну рівня проекту в модулі1, у процедурі p1 модуля1 привласнимо їй значення, а в процедурі 3 модулі 2 виведемо її значення.
Модуль 1
public dim B3 as string 'В3 – змінна рівня проекту
dim B2 as string ‘В2 - змінна рівня модуля
public sub p1 ()
dim B1 as integer 'В1 - змінна рівня процедури
b1 = 5555
b2 = “ідучи- іди”
b3 = “рівень проекту”
p2 'виклик процедури р2
p3 'виклик процедури р3
msgbox (“b1 = “& b1& “b2 = “& b2 &“b3 = “& b3)
end sub
Модуль 1
public sub p2 ()
msgbox (“b2 = “& b2 &“b3 = “& b3)
end sub
Модуль 2
public sub p3 ()
msgbox (“b2 = “& b2)
msgbox (“b3 = “& b3)
end sub
Запустіть процедуру p1 і опишіть результати.
Усі процедури і функції мають рівень дії проекту.
Якщо змінні на рівні процедури описуються ключовим словом static замість dim, то значення змінної зберігається й після виходу з даної процедури, але до завершення виконання коду.
Приклад 4
sub pr4 ()
pr5
pr5
end sub
sub pr5 ()
static v as string
dim v1 as string
if v=”” then
v=”v – статична змінна”
v1=”v1 – нестатична змінна”
end if
msgbox v
msgbox v1
end sub
V зберігається як статична змінна, тому в процедурі pr4 v виводиться двічі, а v1 – один раз.
Статичні процедури і функції
Процедури і функції можуть бути описані як статичні, при цьому всі змінні цих процедур і функцій стають статичними.
Приклад 5
sub proc6 ()
proc7
proc7
end sub
static sub proc7 ()
dim a as string
if a = “” then
a = “ще не доведено, що а - статична”
else
а = “а - статична змінна”
end if
msgbox a
end sub
Змінна а описується і встановлюється в процедурі proc7. Процедура proc6 двічі викликає процедуру proc7 і обидва рази виводить поточне значення змінної а у вікні повідомлень, демонструючи при другому виклику, що а – це дійсно статична змінна. При першому виклику proc7 умова оператора if істинно й змінній а привласнюється значення. При другому виклику proc7 умова оператора if – хибно (тому що після end sub процедури proc7 а зберегла своє значення) і змінна а знову ініціалізується.
Завдання до лабораторної роботи 4
Запустити на виконання приклади 1-5, описати результати, зробити висновки.