VBA - Regex & Replace


1

Ich bin sehr neu in VBA. Unten ist mein Code, um nur die Punkte zu identifizieren und zu entfernen, die nach Datumsangaben und nicht nach dem Text erscheinen. Aber es scheint nicht zu funktionieren.

Sub simpleRegexSearch()

    Dim strPattern As String: strPattern = "[0-9]+[\.]"
    Dim strReplace As String: strReplace = "\."
    Dim myreplace As Long
    Dim strInput As String
    Dim Myrange As Range

    Set regEx = CreateObject("VBScript.RegExp")
    Set Myrange = ActiveSheet.Range("A1")

    For Each cell In Myrange
        If strPattern <> "" Then
            strInput = cell.Value

            With regEx
                .Global = True
                .MultiLine = True
                .IgnoreCase = False
                .Pattern = strPattern
            End With

            If regEx.TEST(strInput) Then
                 Myrange.Value = (regEx.Replace(strInput, strReplace))

            End If
        End If
    Next

    Set regEx = Nothing

End Sub

Beispiel zwei Zeilen der Spalte, an der ich arbeite:

08-02-18. BM sent email to Matt with IM. 15-02-18. Left voice message for Matt today.
08-02-18. BM sent email with IM. 15-2-18. BM spoke to Adam. He is looking at the IM. 16-2-18. Further discussions with Adam today. Looking to develop an office asset with Childcare.

Die gewünschte Ausgabe ist: -

08-02-18 BM sent email to Matt with IM. 15-02-18 Left voice message for Matt today.
08-02-18 BM sent email with IM. 15-2-18 BM spoke to Adam. He is looking at the IM. 16-2-18 Further discussions with Adam today. Looking to develop an office asset with Childcare.

Bitte hilf mir bei der Korrektur drin.


Willkommen bei Super User! Was ist die aktuelle Ausgabe? Was genau ist das Problem? Bitte bearbeiten Sie Ihre Frage , um dies zu klären :)
Bertieb

Antworten:


2

Es gibt eine Reihe von Änderungen, die zur Verbesserung Ihres allgemeinen Codes vorgenommen werden könnten. Ändern Sie jedoch das Muster und ersetzen Sie die Zeichenfolgen, damit der reguläre Ausdruck so funktioniert, wie Sie möchten

Dim strPattern As String: strPattern = "([0-9]+)[\.]"
Dim strReplace As String: strReplace = "$1"

Erklärung von Regex und Ersatzzeichenfolge

([0-9]+)\.

Optionen: Groß- und Kleinschreibung wird nicht berücksichtigt; ^ $ Übereinstimmung bei Zeilenumbrüchen

1 $

Erstellt mit RegexBuddy


-2

[] ist ein Zeichenbereich. Also strpattern = "([0-9] +)" und strReplace = "$ 1".


2
.Finde ein beliebiges Zeichen, nicht nur einen Punkt. Sollte sein \.und dann wäre es das gleiche wie bei der vorherigen Antwort.
Máté Juhász
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.