VBA - Sub Procedure


Sub Procedures are similar to functions, however there are a few differences.

  • Sub procedures DO NOT Return a value while functions may or may not return a value.

  • Sub procedures CAN be called without a call keyword.

  • Sub procedures are always enclosed within Sub and End Sub statements.


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

Calling Procedures

To invoke a Procedure somewhere in the script, you can make a call from a function. We will not be able to use the same way as that of a function as sub procedure WILL NOT return a value.

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

Now you will be able to call the function only but not the sub procedure as shown in the following screenshot.

sub_procedure in VBA

The area is calculated and shown only in the Message box.

calculate_area_sub_2 in VBA

The result cell displays ZERO as the area value is NOT returned from the function. In short, you cannot make a direct call to a sub procedure from the excel worksheet.

calculate_area_sub_3 in VBA