Die vbFunktion Replace ist tatsächlich mit der ...
06.05.2015 21:47:49
Luc:-?
…xlFkt WECHSELN (WorksheetFunction.Substitute) vglbar, Jonas,
hat aber ein Argument mehr. Beide letzten Argumente können einen Ausschnitt aus Arg1 abbilden, mit dem diese Operation dann durchgeführt wird, ähnlich wie bei der xlFkt ERSETZEN (WorksheetFunction.Replace), bei der aber der ganze Textteil gg den AlternativText ausgetauscht wird, während das 4.Argument von WECHSELN ein Zähler ist, mit dem die n.Wiederholung des zu ersetzenden TeilTextes angegeben wdn kann. Die vbFkt Replace ist also eher ein Zwitter aus beiden xlFktt und mit keiner der beiden völlig identisch.
Die zu bevorzugende Methode wäre in deinem Fall tatsächlich eine Kombination aus den vbFktt Left und Instr. Trotzdem habe ich im Folgenden mal alle zusammengestellt, wobei der DummyFileName unverändert bleibt, wenn er keinen Unterstrich enthält:
Sub ReplaceMethoden()
Const txDummyFileNames$ = _
"123b_test.doc 12_test.doc test.doc 123_asdfasdf_asdfasdf.doc"
Dim liDfn$, sbDfn$, tmDfn$, wrDfn$, dfn
On Error Resume Next
For Each dfn In Split(txDummyFileNames)
liDfn = dfn: tmDfn = dfn: wrDfn = dfn
liDfn = Left(liDfn, InStr(liDfn, "_") - 1)
tmDfn = Replace(tmDfn, "_", "", InStr(tmDfn, "_"), 1)
With WorksheetFunction
wrDfn = .Replace(wrDfn, InStr(wrDfn, "_"), Len(wrDfn), "")
sbDfn = .Substitute(dfn, "_" & tmDfn, "")
End With
MsgBox dfn & vbLf & tmDfn & vbLf & wrDfn & vbLf & sbDfn & vbLf & liDfn & vbLf & _
IIf(dfn = tmDfn, "Kein Treffer!", Replace(dfn, "_" & tmDfn, ""))
Next dfn
End Sub
Gruß, Luc :-?
Besser informiert mit …