'/** ' * Wendet eine sPrintF auf jedes Element eines Arrays an ' * ' * @example Jedes Element eines Arrays trimmen ' * Dim values As Variant ' * values = array_walkf("trim('%s')", split("ab, cd, de", ",")) ' * @example Ein Date-Array in ein String-Array mit dem Datumsformat mm.dd.yyyy umformatieren ' * Dim dates(1 To 2) As Date ' * Dim dateString() As Variant ' * dates(1) = "14.7.2013" ' * dates(2) = "3.7.2013" ' * dateString = array_walkf("format(%s, '%s')", dates, "mm.dd.yyyy") ' * @example Formeln anstelle von Funktionen: Verschiedene Potenzen auf 5 anwenden und 1.3 dazuzählen ' * Dim a As Integer: a = 5 ' * Dim pot(1 To 3) As Integer: pot(1) = 1: pot(2) = 2: pot(3) = 2 ' * values = array_walkf("%2$d ^ %1$d + %3$f", pot, a, 1.3) ' * ' * @param String Name der Funktion, die auf jedes Element angewendet werden soll ' * @param Array<> Array mit den zu bearbeitenden Werten ' * @param ParamArray Die folgenden Werte werden so fix an die Funktion mitgegeben ' * @return Array<> Resultat ' */ Public Function array_walkf(ByVal iPattern As String, ByRef iArray As Variant, ParamArray iParams() As Variant) As Variant Dim i Dim value Dim Params() As Variant Dim retArray() As Variant ReDim retArray(LBound(iArray) To UBound(iArray)) 'Die zusätzlichen Paramter für den eval() vorbereiten. 'Am Anfang wird noch ein leerer Eintrag hinzugefügt. Dort kommt dann der Wert ais dem Array hinein ReDim Preserve Params(UBound(iParams) + 1) For i = LBound(iParams) To UBound(iParams) Params(i + 1) = iParams(i) Next i 'Funktion mittels eval() auf jedes Element anwenden For i = LBound(iArray) To UBound(iArray) Params(0) = iArray(i) retArray(i) = Eval(vsPrintF(iPattern, Params)) Next i array_walkf = retArray End Function