В этом руководстве вы узнаете, как вызвать подпроцедуру из другой подпроцедуры в VBA.
Очень полезно писать код, который можно использовать многократно и вызывать из нескольких подпроцедур в вашем проекте - это может сэкономить огромное количество времени и сделать код VBA намного более эффективным.
Запуск подпроцедуры из другой подпроцедуры
Рассмотрим 3 подпроцедуры ниже:
1234 | Подпрограмма TestRoutine ()RunRoutine1RunRoutine2Конец подписки |
123 | Подпрограмма RunRoutine1 ()MsgBox "Доброе утро"Конец подписки |
123 | Подпрограмма RunRoutine2 ()MsgBox «Сегодняшняя дата» & Формат (Дата, «мм / дд / гггг»)Конец подписки |
Если мы запустим подпроцедуру - TestRoutine - она вызовет RunRoutine1 и RunRoutine2, и появятся 2 окна сообщений.

Нет ограничений на количество подпроцедур, которые вы можете вызывать из другой подпроцедуры.
Использование оператора вызова
Вы также можете использовать оператор вызова перед именем процедуры, чтобы облегчить чтение кода. Однако это никак не влияет на то, как код запускается или хранится.
1234 | Подпрограмма TestRoutine ()Вызов RunRoutine1Вызов RunRoutine2Конец подписки |

Вызов подпрограммы с аргументами
Также можно вызвать подпрограмму с аргументами
1234 | Подпрограмма TestRoutine ()RunRoutine1 ("Мелани")RunRoutine2 («Хорошего дня»)Конец подписки |
123 | Sub RunRoutine1 (strName как строка)MsgBox "Доброе утро" & "& strNameКонец подписки |
123 | Sub RunRoutine2 (strMessage как строка)MsgBox «Сегодняшняя дата» & Формат (Дата, «мм / дд / гггг») & VbCrLf & strMessageКонец подписки |

Вызов подпрограммы с именованными аргументами
Если вы называете свои аргументы, вам не нужно передавать их в том же порядке в подпрограммы.
123 | Подпрограмма TestRoutine ()RunRoutine1 strGreeting: = "Как дела?", StrName: = "Мелани"Конец подписки |
123 | Sub RunRoutine1 (strName как String, strGreeting как строкаMsgBox "Доброе утро" & "& strName & vbCrLf & strGreetingКонец подписки |
