'/** ' * Copyright mpl by ERB software | http://wiki.yaslaw.info ' * http://wiki.yaslaw.info/dokuwiki/doku.php/vba/functions/index#replacea ' * ' * @example: str = replaceA("abcd", array("a", "c"), "_") '_b_d ' * @example: str = replaceA("abcd", array("a", "c"), array("A", "C") 'AbCd ' * ' * @example: str = replaceA("abcd", array("a", "c"), "_") '_b_d ' * @example: str = replaceA("abcd", array("a", "c"), array("A", "C") 'AbCd ' * @param Variant expression containing substring to replace. ' * @param Array find Required. Substring being searched for. ' * @param Array or String replace Required. Replacement substring. ' * @param Long Siehe VB-Doku zu replace() ' * @param Long Siehe VB-Doku zu replace() ' * @param VbCompareMethod Siehe VB-Doku zu replace() ' * 2return String ' */ Private Function replaceA( _ ByVal iExpression As Variant, _ ByVal iFind As Variant, _ ByVal iReplace As Variant, _ Optional ByVal iStart As Long = 1, _ Optional ByVal iCount As Long = -1, _ Optional ByVal iCompare As VbCompareMethod = vbBinaryCompare _ ) As String 'Sicherstellen, dass wir einen String haben Dim str As String: str = CStr(Nz(iExpression)) 'Sicherstellen, dass filnd ein Array as iFind ist Dim find As Variant: find = IIf(IsArray(iFind), iFind, Array(iFind)) 'Sicherstellen, dass repl ein Array aus iReplace ist Dim repl As Variant: repl = IIf(IsArray(iReplace), iReplace, Array(iReplace)) Dim i As Integer 'Die Arrays miteinander abstimmen. Wenn find mehr einträge als repl hat, so 'wird der Rest bei repl mit seinem letzten Eintrag aufgefüllt. For i = UBound(repl) + 1 To UBound(find) ReDim Preserve repl(i) repl(i) = repl(0) Next i 'Pro find ein Replace ausführen For i = 0 To UBound(find) str = replace(str, CStr(find(i)), CStr(repl(i)), iStart, iCount, iCompare) Next i 'return replaceA = str End Function