Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
468to472
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
468to472
468to472
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Mid() ersetzt nicht richtig

Mid() ersetzt nicht richtig
13.08.2004 11:25:17
Pascal
Hallo,
ich habe mir mit der Mid() Funktion eine eigene Funktion geschrieben, welche ein Suchwort in einem Text ersetzt. Aber es kommt immer nur Mist raus.
Hier erstmal die Funktion selber:
'StrReplace()
'------------------------------------------------------------------------
'String StrReplace ( String SuchText, String Suchwort, _
' String Replacement )
'
'Ersetzt ein Wort (Suchwort) durch ein anderes (Replacement)
'in einem Text (SuchText).
'------------------------------------------------------------------------

Function StrReplace(ByVal SuchText As String, _
ByVal SuchWort As String, _
ByVal Replacement As String)
If SuchText <> "" Then
If InStr(1, SuchText, SuchWort) <> 0 Then
Mid(SuchText, InStr(1, SuchText, SuchWort), Len(SuchWort)) _
= Replacement
End If
End If
StrReplace = SuchText
End Function

Rufe ich die funktion nun so auf:
Debug.Print StrReplace("Bla Bla Blubber Bla Bla", "Blubber", "ABC")
sollte eigentlich das rauskommen: "Bla Bla ABC Bla Bla"
Aber es kommt das raus: "Bla Bla ABCbber Bla Bla"
Woran liegt das?

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

Betreff
Datum
Anwender
Anzeige
AW: Mid() ersetzt nicht richtig
Andreas
Tja
Habe nicht gewusst, dass man soetwas überhaupt schreiben kann
Mid(SuchText, InStr(1, SuchText, SuchWort), Len(SuchWort)) _
= Replacement
Aber offensichtlich werden nur die 3 Stellen von ABC eingefügt an der Stelle
Mach es klassich
Suchtext=left(suchtext, InStr(1, SuchText, SuchWort), Len(SuchWort))-1)
plus
replacement
plus
dann extrahier mal rechts von suchtext, ab
InStr(1, SuchText, SuchWort), Len(SuchWort)) + die Länge von Suchtext
Mit Deinen Kenntnissen ist es ein klaks.
Warum erfindest du das Rad denn neu?
Boris
Hi Pascal,
das ist die Funktion WECHSELN - oder per VBA: WorksheetFunction.Substitute
Grüße Boris
Anzeige
AW: Warum erfindest du das Rad denn neu?
13.08.2004 11:50:26
Frank
oder in VBA direkt die Methode
replace
nutzen. Zumindestens ab Excel 2000. Für Excel 97 kann ich Dir folgende Routine empfehlen (http://www.dicks-blog.com/excel/2004/05/replace97.html), wenn Du nicht die worksheet

Function nutzen möchtest

Function Replace97(ByVal sExpression As String, _
sFind As String, sReplace As String, _
Optional lStart As Long = 1, _
Optional lCount As Long = -1, _
Optional cCompare As VbCompareMethod = vbBinaryCompare) As String
Dim sTemp As String
Dim lIntCnt As Long
Dim i As Long
Dim lFound As Long
sTemp = Mid(sExpression, lStart, Len(sExpression) - lStart + 1)
lIntCnt = lCount
lFound = InStr(1, sTemp, sFind, cCompare)
Do While CBool(lIntCnt) And (lFound > 0)
sTemp = Left(sTemp, lFound - 1) & _
sReplace & _
Right(sTemp, Len(sTemp) - lFound + 1 - Len(sFind))
lIntCnt = lIntCnt - 1
lFound = InStr(lFound + Len(sReplace), sTemp, sFind, cCompare)
Loop
Replace97 = sTemp
End Function

Anzeige
AW: Warum erfindest du das Rad denn neu?
Pascal
Danke für die Hilfe.
Das ist genau das, was ich brauche. :)
AW: Warum erfindest du das Rad denn neu?
Pascal
Ich wusset garnicht, das man Worksheet Funktionen auch in VBA benutzen kann, aber gut zu wissen.
Danke für die Hilfe :)

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige