Учебники

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

Подпроцедуры похожи на функции, однако есть несколько отличий.

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

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

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

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

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

Подпроцедуры всегда заключены в инструкции 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

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

Подпроцедура в VBA

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

Рассчитать площадь Sub 2 в VBA

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