Главная » Статьи » VBA и макросы

Процедуры и функции

Макросы - последовательность логических команд заключены в единую процедуру с уникальным именем. Срабатывает макрос при возникновении некоторого события: нажатие на кнопку, выбор элемента из списка, переключение между листами или при непосредственном вызове.

Пример процедуры:

Sub procedure_name()
Dim s As String
s = Range("A1").Value
MsgBox s
End Sub

, где procedure_name - уникальное имя процедуры, которое мы будем использовать в проекте.

Обратите внимание такого вида процедура выполняет какие-то действия и не возвращает никакого ответа, и мы не можем оценить насколько удачно былы выполнены все инструкции внутри. Существует альтернатива в виде функций, когда мы можем получить обратный ответ при вызове.

Вариант функции + мини-пример:

Sub my_procedure()
Dim val As Integer: val = Int(Range("A1").Value)
MsgBox my_func(val)
End Sub
Function my_func(param1 As Integer) As Integer
Dim result As Integer
result = param1 ^ 2 - 5

my_func = result
End Function

В примере выше мы определили процедуру my_procedure, например это может быть обработчик нажатия на кнопку (как назначить процедуру как обработчик событий рассказываем в статье), записали в переменную val значение яячейки А1 и передали это число в функцию my_func. Как видите функция не зависит от каких-либо внешних факторов, просто обрабатывает аргумент param1 и возвращает результат, ничего больше.

Программисты обычных языков ООП могут удивляться синтаксису vba, однако различия заметны сразу. Сейчас отметим несколько:

  • двоеточие или перенос строки в vba используется как разделитель команд, когда для многих других языков для этого предназначена ;(точка с запятой).
  • чтобы из функции вернуть значение в место её вызова нужно имени функции присвоить возвращаемое значение, вместо оператора return;
  • код vba нечувствительный к регистру, точнее синтаксис чувствительный в регистру но при написании операторов редактор сам поставит нужные строковые или заглавные буквы, или выдаст предупреждение про неизвестные значения.

Ещё одна приятная особенность функций - их можно использовать как обычные формулы в ячейках! (читайте больше в статье)

Категория: VBA и макросы | Добавил: Руслан_Савелов (18.08.2016)
Просмотров: 325 | Рейтинг: 0.0/0
Всего комментариев: 0
ComForm">
avatar