2016-06-22 18 views
0

Ich möchte eine Funktion, die ein Array als Argument akzeptiert, dann die Funktion einige Elemente füllt, schließlich wird das Array von der Funktion gefüllt wird vom Aufrufer sichtbar.Rückgabe eines Arrays von Funktion in VBA

sub main1() 
Dim A(1,3) as string 
F(A) '???How to get the value of each array element here? 
... 
End Sub 
Function F(X(1,3) as string) string() 
X(1,1)=3.14 
End Function 

Ich schaute auf den folgenden Beitrag, aber habe es nicht verstanden, einige, wie die Fragen nicht die gleichen sind. return array from function in VBA

+1

den Typ Variant-Daten verwenden, in Ihrer Methode Signaturfunktion Blah (arr als Variante) als Variant – Sorceri

+0

, wenn Sie die Antworten auf die Frage, die Sie verknüpft lesen Um genau zu sehen, werden Sie sehen, wo Sie Ihren Code anpassen müssen. –

+0

@Sorceri, richtig, Definition von F (X als VARIANT) AS VARIANT Zuweisung des Aufrufergebnisses an einen Variant bewirkt, dass Daten innerhalb des übergebenen Parameters erscheinen !!! Vielen Dank. Ich würde dies eine Antwort geben, wenn dein Kommentar eine Antwort ist. – NoChance

Antwort

1

Eine Lösung ist nur ByRef das Array übergeben

Sub main1() 
    Dim A(1, 3) As String 
    Call F(A) 
    Debug.Print A(1, 1) 
End Sub 
Sub F(ByRef x() As String) 
    x(1, 1) = 3.14 
End Sub 
+0

Ja, das funktioniert perfekt und ich könnte den ursprünglichen Typ verwenden, ohne eine Variante zu verwenden. Sehr gut. – NoChance

+1

@NoChance danke. Ich habe auch meine Antwort etwas modifiziert, um den Array Populator als Sub zu ändern, nicht als Funktion, da er keinen Wert zurückgibt. – Jeremy

+0

Das stimmt auch, danke nochmal. Es ist sinnvoll, Daten perRef zur Effizienz zu senden, aber es ist schädlich, das aufgerufene Programm zu ändern. Wie auch immer, es sieht so aus, als ob das Universum es geschafft hat ohne meine Weisheit zu überleben! – NoChance

Verwandte Themen