Supportnet Computer
Planet of Tech

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.

Sub test()
Dim a, b As Integer
Result = funcRechnen(5, 6)
End Sub

Public Function funcRechnen(zahl1, zahl2 As Integer)
funcRechnen= zahl1 + zahl2
End Function


Mö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 Function


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

Antwort 2 von martensens

Hallo Jens,

habe erst jetzt wieder reingeguckt. Vielen Dank.

Gruß martensens