How to return an error code from a function
Yep. And if you want to return an object, you can use something like:
Option Explicit
Function myFunct() As Range
Set myFunct = ActiveSheet.Range("A1")
End Function
Sub testme()
Dim myRng As Range
Set myRng = myFunct()
MsgBox myRng.Address(external:=True)
End Sub
deltaquattro wrote:
You're right, Dave. I made a mistake when I tested the the function
which passed boolean, because in testme I kept calling the function
which passed myRetError as an Object. So it's not true that functions
can return just a single variable: they can actually return any number
of variables (I tried that also with doubles, longs, etc.). Good to
know,
Best Regards
deltaquattro
On 8 Feb, 15:47, Dave Peterson wrote:
Yep, you could just pass a boolean so you could check that or you could check
the err.number to see if it's different from 0.
Just to show that it's ok to pass booleans:
Option Explicit
Function mySqrt(x As Double, WorkedOk As Boolean, _
myError As ErrObject) As Double
Dim myVal As Variant
On Error Resume Next
myVal = Sqr(x)
If Err.Number < 0 Then
Set myError = Err
mySqrt = -1 'anything you want
WorkedOk = False
Else
mySqrt = myVal
WorkedOk = True
End If
End Function
Sub testme()
Dim res As Double
Dim myRetError As ErrObject
Dim myRetOk As Boolean
res = mySqrt(-1, myRetOk, myRetError)
If myRetOk = False Then
With myRetError
MsgBox .Number & vbLf & .Description
End With
Else
MsgBox res
End If
End Sub
--
Dave Peterson
|