Subroutine in VBA

Calling a subroutine

Sub HelloWorld()
    MsgBox "Hello World"
End Sub

Sub CallRoutine()
    Call HelloWorld
End Sub
                                                           




Subroutine Parameters

Sub HelloWorld(name As String)
    MsgBox "Hello " & name
End Sub

Sub CallRoutine()
    Call HelloWorld("John")
End Sub
                                                           


ByRef Subroutine Parameters

You can pass parameters to a subroutine by reference or by value. By default, Excel VBA passes parameters by reference. You can also specify this in the subroutine as shown below.

Sub HelloWorld(ByRef row As Range)
    MsgBox "Hello " & row
End Sub

Sub CallRoutine()
    Call HelloWorld(Range("A1"))
End Sub
                                                           


ByVal Subroutine Parameters

Sub HelloWorld(ByVal row As Range)
    MsgBox "Hello " & row
End Sub

Sub CallRoutine()
    Call HelloWorld(Range("A1"))
End Sub