Имейте в виду, что необязательный аргумент не может иметь место перед обязательным аргументом.
Этот код покажет ошибку:
Sub ErrMethod(Optional ByVal FlagArgument As Boolean = True, ByVal Param1 As String)
If FlagArgument Then
'Do something special
Console.WriteLine(Param1)
End If
End Sub
Это распространенная ошибка, мало что объясняемая отладчиком ...
Имеет смысл представить себе звонок ...
ErrMethod(???, Param1)