Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Rückgabewert einer Funktion

Rückgabewert einer Funktion
22.02.2008 17:33:00
Alex
Hallo Leute!
meine Frage mag "blöd" sein, aber Trotzdem: kann eine Funktion mehrere Rückgabewerte liefern?
Wenn ich z.B. in einer Funktion mehrere Variablen berechne, kann ich die irgendwie alle zurückgeben?
Gruß
Alex

Anzeige

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Rückgabewert einer Funktion
22.02.2008 18:37:00
Nepumuk
Hallo Alex,
benutz doch einfach eine ganz normale Sub. Die gibt dir alle übergebenen Wert zurück, so du sie nicht per Value übergeben hast. Kleines Beispiel:
Public Sub test5()
    Dim a As Integer, b As Integer, c As Integer
    Call test6(a, b, c)
    MsgBox a
    MsgBox b
    MsgBox c
End Sub

Public Sub test6(ByRef x As Integer, ByRef y As Integer, ByVal z As Integer)
    x = 1
    y = 2
    z = 3
End Sub

Die Variablen a und b werden per Referenz übergeben und nehmen den geänderten Wert aus der zweiten Routine mit. Die Variable c wird per Wert übergeben und behält darum ihren ursprünglichen Wert, obwohl der in der zweiten Routine geändert wurde. ByRef muss nicht speziell angegeben werden, das ist default.
Gruß
Nepumuk

Anzeige
AW: Rückgabewert einer Funktion
22.02.2008 18:44:10
Renee
Hi Alex,
Die Frage ist nicth blöd.
Eine Funktion kann z.B. einen Array als Rückgabewert liefern.
Wenn es aber völlig 'verschiedene' Vsrisblen sind, würde ich Nepumuk's Vorschlag bevorzugen.
GreetZ Renée

AW: Rückgabewert einer Funktion
22.02.2008 19:17:35
Alex
Danke Nepumuk!
bin irgendwie überhaupt nich auf die Idee mit ByRef gekommen!!!!!!
@Renée: mit Array hab ich mir auch überlegt, aber wie du es selber sagst, bei völlig unterschiedlichen Variablen ist es etwas umständlich (Umwandlung etc.)
Aber trotzdem Danke!!!
Gruß
Alex
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Rückgabewert einer Funktion in Excel VBA


Schritt-für-Schritt-Anleitung

  1. Verwendung von Subroutinen: In VBA kannst Du eine Sub erstellen, die mehrere Werte zurückgibt. Definiere die Variablen, die Du zurückgeben möchtest, und übergebe sie per ByRef. Beispiel:

    Public Sub test5()
       Dim a As Integer, b As Integer, c As Integer
       Call test6(a, b, c)
       MsgBox a
       MsgBox b
       MsgBox c
    End Sub
    
    Public Sub test6(ByRef x As Integer, ByRef y As Integer, ByVal z As Integer)
       x = 1
       y = 2
       z = 3
    End Sub
  2. Verwendung von Arrays: Wenn Du eine VBA-Funktion mit mehreren Rückgabewerten benötigst, kannst Du auch ein Array verwenden. Definiere das Array und gib es als Rückgabewert zurück:

    Public Function GetValues() As Variant
       Dim values(1 To 3) As Integer
       values(1) = 1
       values(2) = 2
       values(3) = 3
       GetValues = values
    End Function
  3. Aufruf der Funktion: Um die Werte zu erhalten, kannst Du die Funktion wie folgt aufrufen:

    Dim result As Variant
    result = GetValues()
    MsgBox result(1) ' Gibt 1 zurück

Häufige Fehler und Lösungen

  • Fehler: Rückgabewert nicht angezeigt: Wenn Du eine VBA-Funktion ohne Rückgabewert verwendest, stelle sicher, dass Du die Werte korrekt über ByRef übergibst. Ansonsten bleibt der Rückgabewert leer.

  • Fehler: Array Rückgabewert funktioniert nicht: Achte darauf, dass Du das Array korrekt definierst und zurückgibst. Verwende Variant als Datentyp für die Rückgabe der Funktion.


Alternative Methoden

  • VBA Sub mit Rückgabewert: Eine einfache Methode zur Rückgabe mehrerer Werte besteht darin, eine Sub zu verwenden, die Werte über ByRef übergibt.

  • Excel SVERWEIS mehrere Werte zurückgeben: Wenn Du mehrere Werte aus einer Tabelle zurückgeben möchtest, kannst Du auch die Funktion SVERWEIS in Kombination mit INDEX und VERGLEICH nutzen.


Praktische Beispiele

  • Beispiel für eine Sub mit mehreren Rückgabewerten:

    Public Sub CalculateValues()
       Dim sum As Integer, product As Integer
       CalculateMath 5, 10, sum, product
       MsgBox "Summe: " & sum & ", Produkt: " & product
    End Sub
    
    Public Sub CalculateMath(ByRef a As Integer, ByRef b As Integer, ByRef s As Integer, ByRef p As Integer)
       s = a + b
       p = a * b
    End Sub
  • Beispiel für eine Funktion, die ein Array zurückgibt:

    Public Function GetStatistics() As Variant
       Dim stats(1 To 2) As Double
       stats(1) = 75.5 ' Durchschnitt
       stats(2) = 100 ' Höchstwert
       GetStatistics = stats
    End Function

Tipps für Profis

  • Verwendung von ByVal und ByRef: Denke daran, dass ByRef die Variablen direkt verändert, während ByVal eine Kopie übergibt. Nutze dies strategisch, um die gewünschten Ergebnisse zu erzielen.

  • Array-Dimensionen klar definieren: Achte darauf, dass Du die Dimensionen des Arrays korrekt definierst, um Laufzeitfehler zu vermeiden.


FAQ: Häufige Fragen

1. Kann eine Funktion mehrere Rückgabewerte in Excel VBA liefern?
Ja, das ist möglich, indem Du entweder ein Array zurückgibst oder Werte über ByRef in einer Sub übergibst.

2. Wie kann ich mehrere Werte mit SVERWEIS zurückgeben?
Du kannst mehrere Werte zurückgeben, indem Du SVERWEIS in Kombination mit anderen Funktionen wie INDEX und VERGLEICH verwendest.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige