Remember also that IsMissing only works if the optional argument is a Variant.
If the optional argument is a string you can test the length of the passed
string like this:
If len(StringArgument) = 0 then
' No Argument passed
End if
If the optional argument is numeric you can use a value unlikely to occur as
the default and then test for that:
Function MyFunc(Optional lngVal As Long = -9999)
If lngVal = -9999 Then
' No value passed
End If
End Function
Note also that if you have any intention of migrating the code to .Net in
the future, IsMissing is no longer supported.
All the best.
"Jake Marx" wrote:
Hi Gixxer,
Not really. You can use optional arguments to simulate overloading:
Public Sub myfunc(Optional a As Variant, Optional b As Variant)
If IsMissing(a) Then
Debug.Print "a not passed"
Else
Debug.Print "a = " & CStr(a)
End If
If IsMissing(b) Then
Debug.Print "b not passed"
Else
Debug.Print "b = " & CStr(b)
End If
End Sub
--
Regards,
Jake Marx
MS MVP - Excel
www.longhead.com
[please keep replies in the newsgroup - email address unmonitored]
Gixxer_J_97 wrote:
is there a way to overload a function in vba?
ie
public sub myfunc(a, as integer, b as integer)
end sub
and
private sub myfunc()
end sub
where the private sub is used for the 'local' userform - and the
public sub is called by an outside module (where a and b would be the
arguments that would normally be accessed by the userform, but in
this case need to be passed)
?