Подпрограмма Excel VBA: как вызвать Sub в VBA на примере
⚡ Умное резюме
Подпрограммы Excel VBA — это блоки кода, выполняющие задачу без возврата значения. На этой странице рассматриваются правила именования, синтаксис подпрограмм, вызов подпрограммы с помощью кнопки и отличие подпрограммы от функции.

Что такое подпрограмма в VBA?
A Подпрограмма в VBA — это фрагмент кода, который выполняет определенную задачу, описанную в коде, но не возвращает результат или значение. Подпрограммы используются для разбиения больших фрагментов кода на небольшие управляемые части. Подпрограммы можно вызывать несколько раз из любого места программы.
Допустим, вы создали пользовательский интерфейс с текстовыми полями для приема вводимых пользователем данных. Вы можете создать подпрограмму, которая очищает содержимое текстовых полей. В таком сценарии подходит подпрограмма вызова VBA, поскольку вы не хотите возвращать какие-либо результаты.
Зачем использовать подпрограммы
- Разбейте код на небольшой управляемый код: Средняя компьютерная программа имеет тысячи и тысячи строк исходного кода. Это вносит сложность. Подпрограммы помогают решить эту проблему, разбивая программу на небольшие управляемые фрагменты кода.
- Code повторное использование. Допустим, у вас есть программа, которой необходим доступ к базе данных, почти все окна программы должны будут взаимодействовать с базой данных. Вместо написания отдельного кода для этих окон вы можете создать функцию, которая обрабатывает все взаимодействия с базой данных. Затем вы можете вызвать его из любого окна, которое захотите.
- Подпрограммы и функции самодокументируются.. Допустим, у вас есть функция CalculateLoanInterest и другая функция ConnectToDatabase. Просто взглянув на имя подпрограммы/функции, программист сможет сказать, что делает программа.
Перед написанием имени компилятор ожидает, что оно будет соответствовать короткому набору правил.
Правила именования подпрограмм и функций
Чтобы использовать подпрограммы и функции, необходимо следовать ряду правил.
- Имя подпрограммы или функции вызова VBA не может содержать пробел.
- Имя подпрограммы вызова VBA Excel или имя функции должно начинаться с буквы или знака подчеркивания. Он не может начинаться с цифры или специального символа.
- Имя подпрограммы или функции не может быть ключевым словом. Ключевое слово – это слово, имеющее особое значение в VBA. Такие слова, как Private, Sub, Function, End и т. д., являются примерами ключевых слов. Компилятор использует их для конкретных задач.
После выбора допустимого имени само объявление следует установленному шаблону.
Синтаксис подпрограммы VBA
Вам нужно будет включить вкладку «Разработчик» в Excel, чтобы следовать этому примеру. Если вы не знаете, как включить вкладку «Разработчик», прочитайте руководство по Элементы управления VBA в Excel
ЗДЕСЬ в синтаксисе,
Private Sub mySubRoutine(ByVal arg1 As String, ByVal arg2 As String) 'do something End Sub
Объяснение синтаксиса
| Code | Экшн |
|---|---|
|
|
|
|
|
|
Следующая подпрограмма принимает имя и фамилию и отображает их в окне сообщения.
Теперь мы собираемся запрограммировать и выполнить эту подпроцедуру. Давайте посмотрим на это.
Как вызвать Sub в VBA
Ниже приведен пошаговый процесс вызова Sub в VBA:
- Разработайте пользовательский интерфейс и установите свойства для пользовательских элементов управления.
- Добавьте подпрограмму
- Напишите код события щелчка для командной кнопки, которая вызывает подпрограмму.
- Протестируйте приложение
Шаг 1) Пользовательский интерфейс
Создайте пользовательский интерфейс, как показано на изображении ниже.
Установите следующие свойства. Свойства, которые мы устанавливаем:
| S / N | Управление | Свойства | Значение |
|---|---|---|---|
| 1 | КомандаКнопка1 | Имя | btnDisplayFullName |
| 2 | Подпись | Полное имя подпрограммы |
Теперь ваш интерфейс должен выглядеть следующим образом.
Шаг 2) Добавить подпрограмму
- Нажмите Alt + F11, чтобы открыть окно кода.
- Добавьте следующую подпрограмму
Private Sub displayFullName(ByVal firstName As String, ByVal lastName As String) MsgBox firstName & " " & lastName End Sub
ЗДЕСЬ в коде,
| Code | Действия |
|---|---|
|
|
|
|
|
|
Шаг 3) Вызов подпрограммы
Вызов подпрограммы из события нажатия командной кнопки.
- Щелкните правой кнопкой мыши по кнопке управления, как показано на изображении ниже. Выберите «Вид». Code.
- Откроется редактор кода
Добавьте следующий код в редактор кода для события нажатия командной кнопки btnDisplayFullName.
Private Sub btnDisplayFullName_Click() displayFullName "John", "Doe" End Sub
Окно вашего кода теперь должно выглядеть следующим образом
Сохраните изменения и закройте окно кода.
Шаг 4) Тестирование кода
На панели инструментов разработчика отключите режим дизайна. Как показано ниже.
Шаг 5) Нажмите на командную кнопку «Подпрограмма полного имени».
Вы получите следующие результаты
Кнопка удобна, но это не единственный способ запустить подпрограмму, и в процессе разработки она редко бывает самым быстрым.
Как запустить подпрограмму без кнопки
Пока вы еще пишете код, добавление элемента управления на лист только для тестирования подпрограммы — пустая трата времени. VBA предлагает четыре других способа запуска подпрограммы, и каждый из них подходит для разных этапов цикла разработки.
- Нажмите клавишу F5 в редакторе: Поместите курсор в любое место внутри подпрограммы и нажмите F5. Она запустится немедленно. Это работает только в том случае, если подпрограмма не принимает аргументов, поскольку VBA не может передавать значения.
- Пошаговое выполнение с помощью клавиши F8: Выполняйте тот же код, по одной строке за раз, чтобы отслеживать изменения каждой переменной в окне «Локальные переменные». Используйте его, когда результат неверен и вам нужно увидеть, в чем причина.
- Воспользуйтесь диалоговым окном «Макросы»: На вкладке «Разработчик» щелкните «Макросы», выберите имя и нажмите «Запустить». В этом списке отображаются только общедоступные подпрограммы без аргументов, поэтому вспомогательная подпрограмма обычно объявляется приватной.
- Вызов из другой подпрограммы: Это метод, используемый для любой подпрограммы, принимающей аргументы, и именно на него опирается кнопка команды выше.
Последний вариант имеет два допустимых варианта. Можно указать имя, за которым следуют только аргументы, а также использовать явное ключевое слово Call, но правила использования скобок различаются в обоих случаях.
Sub RunTheGreeting() ' Form 1: no Call keyword, no brackets displayFullName "John", "Doe" ' Form 2: Call keyword, brackets required Call displayFullName("Jane", "Roe") End Sub
Обе строки делают одно и то же. Смешивание двух форм, например, написание скобок без ключевого слова Call, является наиболее распространенной причиной ошибки компиляции «Expected: =», когда подпрограмма принимает более одного аргумента.
Разница между подпрограммой (sub) и функцией (function) в VBA
В VBA существуют два типа процедур: Sub и Function, и новички часто выбирают не тот. Главный вопрос прост: нужно ли вызывающему коду возвращать значение?
| Характеристика | ниже | Функция |
|---|---|---|
| Возвращает значение | Нет | Да, присвоено имени функции. |
| Объявлено с | Суб… Конец сабвуфера | Функция… Конец функции |
| Называется как | Заявление на отдельной строке | Часть выражения, например, x = myFunc(2) |
| Можно использовать в ячейке рабочего листа. | Нет | Да, в качестве определяемой пользователем функции. |
| Типичное использование | Форматирование листа, очистка полей ввода, отображение сообщения. | Вычислить сумму, преобразовать значение, найти данные. |
Используйте подпрограмму (Sub), когда код работает с рабочей книгой, и Функция VBA когда код выдает ответ, который обрабатывается чем-то другим.






