Inhaltsverzeichnis
In diesem Artikel wird veranschaulicht, wie ein Array mithilfe einer VBA-Funktion zurückgegeben wird.
VBA-Funktions-Return-Array
Wenn Sie Funktionen verwenden, um Arrays zurückzugeben, empfehle ich dringend, Arrays mit dem Typ Variant zu deklarieren:
123 | Funktion ReturnArray() als VarianteEndfunktion |
Varianten-Arrays sind einfacher zu bearbeiten. Die Array-Größe wird weniger besorgniserregend.
Beispiele für Funktionsrückgabe-Arrays
Hier ist ein Beispiel für eine Funktion, die ein Array zurückgibt:
1234567891011121314151617181920212223242526272829 | Funktion ReturnArray() als VarianteDim tempArr als Variante'Neues temporäres Array erstellenReDim tempArr(1 bis 3, 1 bis 2)'Array-Werte zuweisentempArr(1, 1) = "Steve"tempArr(1, 2) = "Johnson"tempArr(2, 1) = "Ryan"tempArr(2, 2) = "Johnson"tempArr(3, 1) = "Andrew"tempArr(3, 2) = "Scott"'Ausgabe-ArrayReturnArray = tempArrEndfunktionUnter TestTransposeArray()Dim AusgangArr As Variant'Rückkehrfunktion aufrufenoutputArr = ReturnArray()'TestausgabeMsgBox-AusgabeArr(2, 1)End Sub |
Beachten Sie, dass wir die Arrays mit dem Datentyp = Variant deklariert haben, um Größenprobleme zu vermeiden.
In diesem Beispiel wird ein Array als Eingabe verwendet, das Array transponiert und das neue transponierte Array ausgegeben:
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 | Funktion TransposeArray(MyArray als Variante) als VarianteDim x so lang, y so langDim maxX so lang, minX wie langDim maxY As Long, minY As LongDim tempArr als Variante"Obere und untere Grenzen erhalten"maxX = UBound(MyArray, 1)minX = LBound(MyArray, 1)maxY = UBound(MyArray, 2)minY = LBound(MyArray, 2)'Neues temporäres Array erstellenReDim tempArr(minX bis maxX, minY bis maxX)'Das Array transponierenFür x = minX bis maxXFür y = minY bis maxYtempArr(y, x) = MyArray(x, y)Als nächstesNächstes x'Ausgabe-ArrayTransposeArray = tempArrEndfunktionUnter TestTransposeArray()Dim testArr(1 bis 3, 1 bis 2) als VarianteDim AusgangArr As Variant'Array-Werte zuweisentestArr(1, 1) = "Steve"testArr(1, 2) = "Johnson"testArr(2, 1) = "Ryan"testArr(2, 2) = "Johnson"testArr(3, 1) = "Andrew"testArr(3, 2) = "Scott"'Transponierungsfunktion aufrufenoutputArr = TransposeArray(testArr)'TestausgabeMsgBox-AusgabeArr(2, 1)End Sub |