Перед процедурою також можна ставити одне зі слів Public або Private в залежності від того, буде процедура доступна для всіх процедур з усіх модулів, або тільки для процедур того ж самого модуля.
Процедури користувача з параметрами дозволяють, на відміну від функцій, обчислювати не одне, а декілька значень. Процедури з параметрами повинні викликатися тільки з інших процедур або функцій, на відміну від процедур без параметрів. Всі методи об'єктів VBA реалізовані у вигляді процедур із параметрами.
Список аргументів крім імен змінних із зазначенням типу містить слова ByVal або ByRef, тобто має вигляд:
ByVal ім’яЗмінної As тип або
ByRef ім’яЗмінної As тип
ByVal – вказує, що аргумент передається за значенням. Це означає, що під час виклику процедури значення фактичного параметра записується на місце формального, і потім використовується в обчисленнях. Будь-які зміни формального параметра, оголошеного за значенням, не спричинять змін фактичного параметра.
ByRef – вказує, що аргумент передається за посиланням (тобто за адресою). Опис ByRef використовується в VBA за замовчанням.
|
|
Передача параметра за посиланням означає, що під час виклику замість формального параметру записується адреса фактичного параметру. Це означає роботу з областю пам’яті, відведеної для фактичного параметра. Тому, усі зміни формального параметра спричинять за собою зміни фактичного параметра. Параметри, описані за допомогою ByRef, використовується для передачі обчислених значень із процедури в програму, яка її викликає.
Таким чином, параметри процедури поділяють на дві групи:
- вхідні, які використовують для обчислень у процедурі, і передають звичайно за значенням;
- вихідні, їхні значення обчислюють у процедурі, щоб передати в програму, яка викликає. Їх передають обов'язково за посиланням.
Виклик процедури здійснюється за допомогою її імені та списку фактичних параметрів, записаних в тому ж порядку, що і формальні (див. задачу 4.2). Якщо параметри завдаються явно, то їхній порядок значення не має.
Для виклику процедури може використовуватись й оператор CALL (список фактичних параметрів). Порядок параметрів важливий.
Задача 8.2 Знайти суму Max елементів масивів Х(n) та Y (n). Мах елементи масивів знайти за допомогою функції. Для введення елементів масива написати процедуру.
Інтерфейс задачі даний на рис. 8.2.
txtN
txM
cmdRes
cmdRes
txtRes
txtRes
Рисунок 8.1 – Форма для приклада 8.2