Supportnet / Forum / Tabellenkalkulation
Funktionen mit Rückgabe
Frage
Guten Tag,
ich arbeite z.Zt. mit Excel 2003. Ich habe ein Modul geschrieben, dass einfach nur zwei Zahlen, die aus einer SUB übergeben werden zusammenrechnet. Das Ergebnis soll wieder an die SUB zurückgeliefert werden.
Der Aufruf aus der SUB klappt prima, Zahlen werden übergeben und die Ergebnis ermittelt, jedoch nicht an die SUB zurück übermittelt. Kann mir jemand sagen, wo bei mir der Fehler liegt oder mir einen Link nennen, wo dieses Thema bereits behandelt wurde?
Code:
Sub test()
Dim a, b As Integer
Result = funcRechnen(5, 6)
End Sub
Public Function funcRechnen(zahl1, zahl2 As Integer)
Dim Result As Integer
Result = zahl1 + zahl2
End Function
Vielen Dank im voraus
martensens
Antwort 1 von jb090979
Hallo martensens ,
in deiner Funktion ist ein kleiner Fehler. So müsste, das eigentlich funktionieren.
Möchtest du mal mehr als einen Rückgabewert haben, bietet sich folgende Form an.
Standartmäßig werden Parameter ByVal übergaben also nur den Wert. ByRef ist so was ähnliches wie in C der Pointer. Das ganze funktioniert ebenfalls bei Sub Routines.
MFG Jens
in deiner Funktion ist ein kleiner Fehler. So müsste, das eigentlich funktionieren.
Sub test()
Dim a, b As Integer
Result = funcRechnen(5, 6)
End Sub
Public Function funcRechnen(zahl1, zahl2 As Integer)
funcRechnen= zahl1 + zahl2
End FunctionMöchtest du mal mehr als einen Rückgabewert haben, bietet sich folgende Form an.
Sub test()
Dim summe, differenz, produkt, division As Variant
Result = funcRechnen(5, 6, summe, differenz, produkt, division)
MsgBox "Summe:" & summe
MsgBox "Differenz:" & differenz
MsgBox "Produkt:" & differenz
MsgBox "Division:" & division
MsgBox "Result:" & Result
End Sub
Public Function funcRechnen(zahl1, zahl2 As Integer, ByRef sum, diff, prod, div As Variant)
sum = zahl1 + zahl2
diff = zahl1 - zahl2
prod = zahl1 * zahl2
div = zahl1 / zahl2
funcRechnen = 34
End FunctionStandartmäßig werden Parameter ByVal übergaben also nur den Wert. ByRef ist so was ähnliches wie in C der Pointer. Das ganze funktioniert ebenfalls bei Sub Routines.
MFG Jens
Antwort 2 von martensens
Hallo Jens,
habe erst jetzt wieder reingeguckt. Vielen Dank.
Gruß martensens
habe erst jetzt wieder reingeguckt. Vielen Dank.
Gruß martensens

