I have always (in the past) passed objects and variables to sub-procedures using this syntax
I believe that it depends on whether it's object(s) and number of parameters
This should work
Call CloseSrcWB (sourceWB)
This is a combination of options if you're interested
Option Explicit
Sub Master()
Dim myWB As Workbook
Set myWB = ThisWorkbook
'pass objects
Call DoSomethingSub(myWB)
DoSomethingSub myWB
' DoSomethingSub (myWB) <<<<<<<<<<<<<< Err 438
'pass not-objects, one parameter
DoSomethingElse 10
DoSomethingElse (10)
'pass not-objects, more than one parameter
DoSomethingElse2 10, 5
Call DoSomethingElse2(10, 3)
'doesn't work
'DoSomethingElse2 (10, 3) ' <<<<<<<<<<<<<< syntax error
End Sub
Sub DoSomethingSub(sourceWB As Workbook)
MsgBox sourceWB.FullName
End Sub
Sub DoSomethingElse(N As Long)
MsgBox 2 * N
End Sub
Sub DoSomethingElse2(N1 As Long, N2 As Long)
MsgBox N1 * N2
End Sub