'/** ' * Copyright mpl by ERB software ' * http://wiki.yaslaw.info ' * ' * Wendet eine Callback-Funktion auf jedes Element eines Arrays an ' * Angelehnt an die PHP-Funktion array_walk und array_map. ' * Jedoch wird hier der Array selber nicht überschrieben ' * @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_walk( _ ByVal iFuncName As String, _ ByRef iArray As Variant, _ ParamArray iParams() As Variant _ ) As Variant Dim i, j 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) = IIf(IsNumeric(iParams(i)), iParams(i), """" & iParams(i) & """") Next i 'Funktion mittels eval() auf jedes Element anwenden For i = LBound(iArray) To UBound(iArray) params(0) = IIf(IsNumeric(iArray(i)), iArray(i), """" & iArray(i) & """") retArray(i) = Eval(iFuncName & "(" & join(params, ", ") & ")") Next i array_walk = retArray End Function