Zur Hauptseite ... Zum Onlinearchiv ... Zum Abonnement ... Zum Newsletter ... Zu den Tools ... Zum Impressum ... Zum Login ...

Funktionen mit mehreren Rückgabewerten, Teil I

Funktionen geben in der Regel einen Wert zurück. Dieser wird innerhalb der Funktion in einer Variablen gespeichert, die den Namen der Funktion hat. Wenn Sie einmal mehr als einen Wert per Funktion ermitteln müssen, gibt es drei Möglichkeiten, von denen Sie die erste in vorliegendem Beitrag kennenlernen.

Funktionsaufbau

Der Aufbau einer herkömmlichen Funktion sieht folgendermaßen aus:

Public Function Funktionsname ([Parameter1 AS Datentyp1], [Parameter2 AS Datentyp2], ...) AS DatentypRückgabewert

    [Beginn der Funktion]

        ...

    Funktionsname = ErmittelterWert

    [Ende der Funktion]

End Function

Das Ergebnis der Funktion wird wie in dem Schema beschrieben über den Funktionsnamen zurückgegeben. Der Aufruf dieser Funktion sieht folgendermaßen aus:

Debug.Print Funktionsname([Parameter1], [Parameter2], ...)

In diesem Fall wird das Ergebnis im Testfenster ausgegeben.

Rückgabe per Parameter

Die einfachste Methode zur Rückgabe mehr als eines Funktionswertes ist die Übergabe von Parameter per Referenz. Einen Parameter per Referenz zu übergeben bedeutet, dass nicht der Wert selbst, sondern ein Verweis auf die Speicheradresse, an der sich die Variable befindet, an die aufgerufene Funktion übergeben wird.

Dabei handelt es sich um die standardmäßige Art der Parameterübergabe, die nicht speziell deklariert werden muss. Wenn Sie die Deklaration explizit vornehmen möchten, stellen Sie dem jeweiligen Parameter den Ausdruck ByRef voran:

Function Beispielfunktion(ByRef Beispielparameter As String)

Die andere Möglichkeit ist die Übergabe des Parameters als Wert. Dabei verwenden Sie das Schlüsselwort ByVal statt ByRef:

Function Beispielfunktion(ByVal Beispielparameter As String)

Die folgende Prozedur und die von dieser Prozedur aufgerufene Funktion zeigen, wie Sie zusätzlich zum eigentlichen Rückgabewert der Funktion einen weiteren Wert zurückgeben können. Dabei wird einfach ein weiterer Parameter als Referenz an die Funktion übergeben und in dieser geändert:

Public Sub ParameterAendern()

    Dim Parameter1 As Integer

    Dim Parameter2 As Integer

    Dim Parameter3 As Integer

    Parameter1 = 1

    Parameter2 = 2

    Parameter3 = 0

    Debug.Print Summieren(Parameter1, Parameter2, Parameter3)

    Debug.Print Parameter3

End Sub

Public Function Summieren(Parameter1 As Integer, Parameter2 As Integer, Parameter3 As Integer)

    Summieren = Parameter1 + Parameter2

    Parameter3 = Parameter1 + Parameter2

End Function

Der Wert von Parameter3 wird in der Prozedur ParameterAendern zunächst auf 0 gesetzt. Die Referenz auf diesen Wert wird der Funktion Summieren übergeben. In der Funktion wird der eigentliche Wert geändert. Wenn die aufrufende Prozedur anschließend auf den Parameter zugreift, erhält sie den geänderten Wert.

Auf die beschriebene Art können Sie natürlich auch mehrere Werte in der Funktion ermitteln und anschließend in der aufrufenden Prozedur weiterverarbeiten. 

© 2003-2015 André Minhorst Alle Rechte vorbehalten.