![]() |
Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | |
|
Перед процедурою також можна ставити одне зі слів Public або Private в залежності від того, буде процедура доступна для всіх процедур з усіх модулів, або тільки для процедур того ж самого модуля.
Процедури користувача з параметрами дозволяють, на відміну від функцій, обчислювати не одне, а декілька значень. Процедури з параметрами повинні викликатися тільки з інших процедур або функцій, на відміну від процедур без параметрів. Всі методи об'єктів VBA реалізовані у вигляді процедур із параметрами.
Список аргументів крім імен змінних із зазначенням типу містить слова ByVal або ByRef, тобто має вигляд:
ByVal ім’яЗмінної As тип або
ByRef ім’яЗмінної As тип
ByVal – вказує, що аргумент передається за значенням. Це означає, що під час виклику процедури значення фактичного параметра записується на місце формального, і потім використовується в обчисленнях. Будь-які зміни формального параметра, оголошеного за значенням, не спричинять змін фактичного параметра.
ByRef – вказує, що аргумент передається за посиланням (тобто за адресою). Опис ByRef використовується в VBA за замовчанням.
Передача параметра за посиланням означає, що під час виклику замість формального параметру записується адреса фактичного параметру. Це означає роботу з областю пам’яті, відведеної для фактичного параметра. Тому, усі зміни формального параметра спричинять за собою зміни фактичного параметра. Параметри, описані за допомогою ByRef, використовується для передачі обчислених значень із процедури в програму, яка її викликає.
Таким чином, параметри процедури поділяють на дві групи:
вхідні, які використовують для обчислень у процедурі, і передають звичайно за значенням;
вихідні, їхні значення обчислюють у процедурі, щоб передати в програму, яка викликає. Їх передають обов'язково за посиланням.
Виклик процедури здійснюється за допомогою її імені та списку фактичних параметрів, записаних в тому ж порядку, що і формальні (див. задачу 4.2). Якщо параметри завдаються явно, то їхній порядок значення не має.
Для виклику процедури може використовуватись й оператор CALL (список фактичних параметрів). Порядок параметрів важливий.
Задача 4.2. Написати процедури для обчислення коренів квадратного рівняння за заданими коефіцієнтами.
У процедурі буде три вхідних параметри – коефіцієнти рівняння a, b та c і три вихідних параметри – корені x1, x2 і ознака наявності дійсних коренів – pr. Параметр pr набуває значення True (істина),якщо рівняння має дійсні корені, тобто дискримінант D ≥ 0.
Sub Корені (ByVal a As Single, ByVal b As Single, ByVal c As Single, _
ByRef x1 As Single, ByRef x2 As Single, ByRef pr As Boolean)
Dim D As Single ' об'ява внутрішньої змінної D
D = b ^ 2 - 4 * a * c ' обчислюємо дискримінант
pr = (D >= 0) ' pr=True, якщо дійсні корені є
If pr Then
x1 = (– b + Sqr(D)) / (2 * a)
x2 = (– b – Sqr(D)) / (2 * a)
End If
Дата публикования: 2015-01-10; Прочитано: 277 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!