Anzeige
Archiv - Navigation
1424to1428
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Richtiges Anwenden der Replace Funktion

Richtiges Anwenden der Replace Funktion
06.05.2015 16:37:39
Jonas
Hallo Leute ich möchte nur einen gewissen Teil einer Variablen mit Hilfe einer MsgBox anzeigen und der Replace Funktion anzeigen lassen. In diesem Fall nur den Teil bis zum Unterstrich. Bisher habe ich es so versucht:
Allerdings zeigt die MsgBox mir dann die komplette Variable an.
Sub Filter()
Dim DummyfileName1 As Variant
Dim DummyfileName2 As Variant
Dim DummyfileName3 As Variant
Dim DummyfileName4 As Variant
Dim ID As Variant
DummyfileName1 = "123b_test.doc"
DummyfileName2 = "12_test.doc"
DummyfileName3 = "test.doc"
DummyfileName4 = "123_asdfasdf_asdfasdf.doc"
ID = Replace(DummyfileName1, "(.*)_", "$1")
If ID Like "**" Then
MsgBox ("ID lautet:" & ID)
Else: MsgBox ("nix gematcht")
End If
End Sub
Dies soll auch funktionieren bei anderen Variablen und dann auch immer nur bis zum ersten Unterstrich. (siehe weitere Variablen)
Vielen Dank für eure Hilfe

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Richtiges Anwenden der Replace Funktion
06.05.2015 16:56:28
UweD
Hallo
Sub Filter()
Dim DummyfileName(4) As Variant
Dim ID As Variant
Dim bis As Integer, i As Integer
DummyfileName(1) = "123b_test.doc"
DummyfileName(2) = "12_test.doc"
DummyfileName(3) = "test.doc"
DummyfileName(4) = "123_asdfasdf_asdfasdf.doc"
For i = 1 To 4
bis = InStr(DummyfileName(i), "_") - 1
If bis > 0 Then
ID = Left(DummyfileName(i), bis)
MsgBox ("ID lautet: " & ID)
Else
MsgBox ("nix gematcht")
End If
Next
End Sub
Gruß UweD

AW: Richtiges Anwenden der Replace Funktion
06.05.2015 17:10:50
Jonas
Vielen Dank für eure schnelle Hilfe. Funktioniert einwandfrei.

AW: Richtiges Anwenden der Replace Funktion
06.05.2015 16:57:03
Daniel
Hi
du wendest hier die VBA-Text-Funktion "Replace" an.
diese entspricht der Excel-Text-Funktion "Wechseln".
diese Text-Funktionen kennen keine Jokerzeichen!
Man darf hier die Textfunktionen Wechseln/Replace nicht mit der Menüfunktion Ersetzen/Replace verwechseln, auch wenn sie in VBA den gleichen Namen haben.
Der Joker funktioniert nur in der Menü-Funktion und man kann diese nur auf Zellbereiche anwenden, aber nicht auf VBA-Stringvariablen.
wenn du den Text bis zum ersten Unterstrich (einschließlich) abschneiden willst, dann so:
ID = Mid$(DummyFileName1, Instr(DummyFileName1, "_") + 1)
Gruß Daniel

Anzeige
außerdem
06.05.2015 17:12:23
Michael
Hallo zusammen,
bin zu spät dran, und ich freue mich, daß andere auch so denken wie ich und erst mal ein array angelegt haben.
Nur noch zur Demo mit dem like:

Sub Filter()
Dim DummyfileName(3) As String, ID As String
Dim i As Long
DummyfileName(0) = ""
DummyfileName(1) = "1"
DummyfileName(2) = "te"
DummyfileName(3) = "123_asdfasdf_asdfasdf.doc"
For i = 0 To 3
ID = DummyfileName(i)
If ID Like "**" Then
MsgBox ("ID lautet: ")
Else: MsgBox ("nix gematcht")
End If
Next i
End Sub
* trifft halt *immer*
Schöne Grüße,
Michael

Anzeige
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 durch­geführt wird, ähnlich wie bei der xlFkt ERSETZEN (Worksheet­Function.Replace), bei der aber der ganze Textteil gg den Alter­nativ­Text ausgetauscht wird, während das 4.Argument von WECHSELN ein Zähler ist, mit dem die n.Wiederholung des zu erset­zenden Teil­Textes 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 zusammen­gestellt, wobei der DummyFileName unverändert bleibt, wenn er keinen Unter­strich 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 …
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige