Передача аргументів VBA

Передача аргументів під час виклику процедури VBA. Урок №34

Під час виклику процедури, у якої є аргументи, в операторі, який її викликає, повинен бути вказаний список аргументів. Елементи цього списку розділяються комами і розташовуються в такому самому порядку, що й при оголошенні процедури.

В якості аргументів під час виклику процедури можуть використовуватися змінні, константи, символьні рядки, масиви та об'єкти.

Приклад передачі аргументів

Sub myArg(a As String, b As String)
    a = "Все"
    b = "працює"
End Sub
Sub myCode()
Dim Ta As String, Tb As String
    Call myArg(Ta, Tb)
    MsgBox Ta & " " & Tb
End Sub

У цьому прикладі ми створили процедуру myArg з двома аргументами – a та b. Обидва ці аргументи мають тип рядок. У цій же процедурі, ми надали змінній a значення «Всі», а змінній b значення «працює».

Далі ми створили процедуру myCode. У ній оголосили дві рядкові змінні Ta і Tb. Потім за допомогою ключового слова Call викликали процедуру myArg і передали змінні Ta і Tb в процедуру myArg. В результаті чого вони отримали значення «Всі» та «працює» відповідно.

На завершення, щоб переконатися, що все працює так як треба, ми вивели на екран повідомлення. І якщо ми все зробили правильно, то у цьому повідомленні буде текст «Все працює».

Ось такий у нас вийшов приклад. Може це і не найкращий приклад використання аргументів у процедурах, зате в ньому дуже доступно пояснюється, як відбувається передача аргументів під час виклику процедури.

Приклад передачі необов'язкових аргументів

Sub myArg(a As String, b As String, Optional c As String, Optional d As String)
    a = "Все"
    b = "працює"
    c = "10"
    d = "ВІТАЮ"
End Sub
Sub myCode()
Dim Ta As String, Tb As String, Tc As String, Td As String
    Call myArg(Ta, Tb, , Td)
    MsgBox Ta & " " & Tb & ". " & Td
End Sub

У цьому прикладі ми додали ще 2 необов'язкові аргументи c і d. Цим аргументам було присвоєно значення «10» та «ВІТАЮ» відповідно. Наші нові аргументи мають тип рядок.

Під час виклику процедури ми вирішили не використовувати третій аргумент - c. Тому в рядку коду Call myArg(Ta, Tb, , Td) ми його не вказали, але вказали кому, що відокремлює його.

Якщо ж ми захочемо опустити і четвертий аргумент – d, то тоді вже можна взагалі не вказувати коми, що відокремлюють елементи.

Приклад

Sub myArg(a As String, b As String, Optional c As String, Optional d As String)
    a = "Все"
    b = "працює"
    c = "10"
    d = "ВІТАЮ"
End Sub
Sub myCode()
Dim Ta As String, Tb As String, Tc As String, Td As String
    Call myArg(Ta, Tb)
    MsgBox Ta & " " & Tb
End Sub

Іменовані аргументи

Якщо в процедурі є велика кількість аргументів (у тому числі і необов'язкових), то цілком резонно розглянути варіант виклику з іменованими аргументами. Тобто вказати імена лише тих аргументів, значення яких передаються. Але для цього аргументи повинні мати ім'я. Тому їх потрібно записати, дотримуючись наступного синтаксису.:

 де,

  • argument – ім'я аргумента в оголошенні процедури;
  • := – оператор присвоєння;
  • value – значення, яке присвоюється даному аргументу.

Приклад

Sub myArg(A, B, Optional C, Optional D)
    A = "Все"
    B = "працює"
    C = "10"
    D = "ВІТАЮ"
End Sub
Sub myCode()
Dim Ta, Tb, Tc, Td
    Call myArg(D:=Td, A:=Ta, B:=Tb)
    MsgBox Td & "! " & Ta & " " & Tb
End Sub

Зверніть увагу, що в цьому прикладі, я змінив порядок вказівки аргументів у списку. Зроблено це спеціально, щоб показати, що при вказівці аргументів по їх імені порядок не має значення.

Також допускається комбінування способів запису аргументів. Можна спочатку вказати деяку початкову частину списку аргументів, потім у довільному порядку необхідні іменовані аргументи.

Приклад

Sub myArg(A, B, Optional C, Optional D)
    A = "Все"
    B = "працює"
    C = "10"
    D = "ВІТАЮ"
End Sub
Sub myCode()
Dim Ta, Tb, Tc, Td
    Call myArg(Ta, D:=Td, B:=Tb)
    MsgBox Td & "! " & Ta & " " & Tb
End Sub

У цьому прикладі, в рядку Call myArg(Ta, D:=Td, B:=Tb) ми спочатку починаємо використовувати список аргументів (Ta), а потім іменовані аргументи (D:=Td, B:=Tb).

Рекомендуємо

Сollaborator

Hosting Ukraine

Продукція та послуги

Main Menu