VBA - подпроцедура

Sub Procedures похожи на функции, но есть несколько отличий.

  • Подпроцедуры НЕ возвращают значение, в то время как функции могут возвращать или не возвращать значение.

  • Подпроцедуры МОГУТ быть вызваны без ключевого слова call.

  • Подпроцедуры всегда заключаются в операторы Sub и End Sub.

пример

Sub Area(x As Double, y As Double)
   MsgBox x * y
End Sub

Вызов процедур

Чтобы вызвать процедуру где-нибудь в скрипте, вы можете вызвать функцию. Мы не сможем использовать тот же способ, что и функция, поскольку подпроцедура НЕ БУДЕТ возвращать значение.

Function findArea(Length As Double, Width As Variant)
   area Length, Width    ' To Calculate Area 'area' sub proc is called
End Function

Теперь вы сможете вызывать только функцию, но не подпроцедуру, как показано на следующем снимке экрана.

Площадь рассчитывается и отображается только в поле «Сообщение».

В ячейке результата отображается НОЛЬ, поскольку значение площади НЕ возвращается функцией. Короче говоря, вы не можете напрямую вызвать подпроцедуру из рабочего листа Excel.