
Виклик процедури
Після створення процедури її необхідно викликати у потрібному місці головної (викликаючої) програми. Існують два способи звертання до процедур: за допомогою Call і шляхом безпосереднього звертання за іменем процедури.
Повний синтаксис звертання до процедури-підпрограми має наступний вигляд:
1- спосіб
Call Ім'я_Процедури ([Список_Параметрів])
2- спосіб
Ім'я_Процедури [Список_Параметрів]
Наприклад:
Call CalcRectangle(a, b, s, p)
або
CalcRectangle a, b, s, p
де a, b, s, p – фактичні параметри. В обох випадках значення параметру Ім'я_Процедури має співпадати з іменем процедури заданим за допомогою оператора Sub при її визначенні. Параметрами можуть бути імена змінних або константи. Аргументи процедури відокремлюються один від одного комами.
Передача параметрів процедури
За допомогою параметрів можна організувати двосторонній обмін даних між процедурою та викликаючою програмою. Іншими словами, процедура використає передану їй в якості вхідних параметрів інформацію для виконання внутрішніх обчислень, а потім повертає одержаний результат через відповідні параметри. Скористаємось попередньою підпрограмою. У наступному фрагменті показано різні типи передачі даних в процедури-підпрограми.
Private Sub Run_Click()
Call CalcRectangle(a, b, s, p)
Print “Площа=”, s
Print “Периметр=”, s
Print “______________”
CalcRectangle a, 2, s, p
Print “Площа=”, s
Print “Периметр=”, s
End Sub
Як бачимо, при виклику процедури-підпрограми можна задавати числові значення для вхідних фактичних параметрів.
Зауваження. Між формальними і фактичними параметрами має бути однозначна відповідність, як за типом так і за кількістю. Якщо перед іменем формального параметра вказати ключове слово Option, то він буде не обов’язковим.
Якщо передача параметра здійснюється за адресою (за посиланням), то процедурі передається адреса змінної, а не саме значення цієї змінної. Таким чином, усі операції, що відносяться до даної змінної, як всередині процедури, так і у викликаючій програмі будуть виконуватися з однією і тою самою коміркою пам’яті. Щоб підкреслити факт передачі параметрів за адресою, при описі параметрів процедури використовують ключове слово ByRef.
Якщо параметри передаються за значенням, то фактичний аргумент береться у дужки або перед аргументом пишеться ByVal. При цьому процедурі передаються значення змінних і зміни параметрів у процедурі не впливають на значення змінних у викликаючій програмі. За замовчуванням вважається, що якщо при оголошенні параметрів процедури не вказано спосіб передачі аргументів, то вони передаються за адресою. Наприклад:
Call CalcRectangle(ByVal a, ByVal b, s, p)
Примусове завершення процедури
При написанні процедури інколи буває необхідно достроково завершити її виконання і повернути управління у викликаючу програму. Особливо це актуально у складних програмах та у процедурах, які входять до їх складу. В такому випадку необхідно скористатися оператором Exit Sub.
Найчастіше цей оператор використовується на початку процедури, коли перевіряється коректність переданих параметрів. Якщо один із параметрів має недопустиме значення, яке може призвести до помилки при подальшому виконанні процедури її необхідно завершити за допомогою оператора Exit Sub.