Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Suchen und Ersetzen in VBA - Meldungen verarbeiten

Suchen und Ersetzen in VBA - Meldungen verarbeiten
16.03.2016 09:18:33
Roland
Hallo an die Experten.
Folgendes Problem. Ich habe ein VBA-Makro, das die Suchen und Ersetzen-Funktion aus dem Dialog nutzt, um in parametrisierter Form Zellinhalte zu ersetzen.
Im Dialog erhalte ich dann so schöne Meldungen, dass z.B. der Suchtext nicht gefunden wurde oder dass es eben zu x Ersetzungen gekommen ist.
Diese Info würde ich gerne in einem Log-File meines Makros als Protokoll ausgeben. Habe aber bislang noch keinen Hinweis gefunden, wie ich auf diese Info im VBA-Code zugreifen kann.
Danke für entsprechende Hinweise im Voraus
Roland

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Suchen und Ersetzen in VBA - Meldungen verarbeiten
16.03.2016 09:43:44
Michael
Hallo!
Würde ich so machen:
Sub ReplaceLog()
Dim i As Long
Dim Bereich As Range
Dim Zelle As Range
Dim StrCache As String
Set Bereich = ActiveSheet.UsedRange
i = 0
For Each Zelle In Bereich
StrCache = Zelle.Text
Zelle.Replace What:="a", Replacement:="b", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
If StrCache  Zelle.Text Then i = i + 1
Next Zelle
Select Case i
Case Is > 0
MsgBox i & " Ersetzungen vorgenommen."
Case Else
MsgBox "Suchbegriff nicht gefunden. Keine Ersetzungen vorgenommen."
End Select
End Sub
LG
Michael

Anzeige
AW: Suchen und Ersetzen in VBA - Meldungen verarbeiten
16.03.2016 10:47:31
Roland
Danke für den Hinweis, Michael. Das funktioniert erst einmal so. Allerdings verliere ich so Performance :-(. Aber das lässt sich bestimmt noch optimieren.

AW: Suchen und Ersetzen in VBA - Meldungen verarbeiten
16.03.2016 11:08:05
Michael
Hallo!
Aber das lässt sich bestimmt noch optimieren.
Aber dazu lassen sich bestimmt noch mehr Informationen Deinerseits liefern (konkrete Verhältnisse in Deiner Mappe, wie groß ist der durchsuchte Bereich etc.).
Anderer Ansatz wäre folgender:
Sub ReplaceLog()
Dim Bereich As Range
Dim Zelle As Range
Dim SuchStr As String
Dim ErsatzStr As String
Dim Zaehler As Long
Set Bereich = ActiveSheet.UsedRange
SuchStr = "op"
ErsatzStr = "AA"
Zaehler = WorksheetFunction.CountIfs(Bereich, "*" & SuchStr & "*")
For Each Zelle In Bereich
Zelle.Replace What:=SuchStr, Replacement:=ErsatzStr, LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
Next Zelle
MsgBox "Ersetzungen: " & Zaehler
End Sub
Lg
Michael

Anzeige
AW: Suchen und Ersetzen in VBA - Meldungen verarbeiten
16.03.2016 13:04:57
Roland
Die Story ist wie folgt: Ich ziehe mir via ODBC einen Datenbanktabelle mit ca. 100.000 Datensätzen nach Excel. In einem Feld dieser Tabelle sind Freitexte erfasst. In der Regel zwischen 500 und 1000 Zeichen groß. Auf diesen Freitextfeldern sollen Korrekturen im Suchen-und-Ersetzen-Verfahren angewendet werden. Dazu wird eine Liste der Ersetzungspärchen vorgegeben. Das werden voraussichtlich 50 sein / werden. Diese werden dann ausgeführt und sollen in der Gesamtheit protokolliert werden. Die Trefferquote wird zwischen 0 und 10.000 liegen. Anhand des Protokolls und einer Sichtprüfung wird die Änderung freigegeben und in Datenbank zurückgeschrieben.

Anzeige
AW: Suchen und Ersetzen in VBA - Meldungen verarbeiten
16.03.2016 13:22:12
Michael
Hallo!
Super Sache, aber wo benötigst Du jetzt Hilfe? Was ist Deine Frage?
Geht's um meine letzte Code-Variante oder...
LG
Michael

AW: Suchen und Ersetzen in VBA - Meldungen verarbeiten
16.03.2016 13:35:27
Roland
Alles gut inzwischen :-). Mit der CountIf-Methode bekomme ich meine Anzahl. Die Replace-Methode wende ich auf die gesamte Spalte an und gehe nicht über jede einzelne Zelle.
Das ist aktuell performant genug.
Danke für Interesse und Hilfe.
LG
Roland

Gerne, Danke für die Rückmeldung, owT
16.03.2016 13:48:42
Michael

351 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige