Argumente werden standardmäßig ByRef übergeben, d.h. einfach gesagt: Wenn du dieses innerhalb der Funktion änderst, änderst du es auch außerhalb.
Wie gesagt, alles wird ByRef, auch ohne explizite Angabe, übergeben (im Beispiel trifft das also auch auf a und b zu, man könnte diese also auch manipulieren, sind diese ByVal übergeben worden, dann wirkt sich das nicht mehr nach außen hin aus).
Option Explicit
Public Function Test(a As Double, b As Double, ByRef c As Double) As Boolean
On Error GoTo ENDE
c = a / b
Test = True
Exit Function
ENDE:
Test = False
End Function
Public Sub Function_Call()
Dim dblWert1 As Double
Dim dblWert2 As Double
Dim dblErg As Double
dblWert1 = 1
dblWert2 = 0
If Test(dblWert1, dblWert2, dblErg) Then
MsgBox "Erg = " & dblErg, Title:="OK"
Else
MsgBox "Fehler"
End If
End Sub
Gruß
|