VBA - Regex & Replace

1

Eu sou muito novo no VBA. Abaixo está meu código para identificar & remova apenas os pontos que aparecem depois das datas e não depois do texto. Mas isso não parece funcionar.

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

Exemplos de duas linhas da coluna em que estou trabalhando são: -

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.

A saída desejada é: -

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.

Por favor me ajude com a correção.

    
por Renu Sharma 20.04.2018 / 11:22

2 respostas

2

Há várias alterações que podem ser feitas para melhorar seu código geral. Mas na medida em que o regex, para permitir que ele funcione como você quer, mude seu padrão e substitua strings

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

Explicação do Regex e da string de substituição

([0-9]+)\.

Opções: insensível a maiúsculas e minúsculas; ^ $ Corresponde às quebras de linha

$ 1

Criado com RegexBuddy

    
por 21.04.2018 / 05:19
-2

[] é um intervalo de caracteres. Então strpattern="([0-9] +)." E strReplace="$ 1" ..

    
por 12.10.2018 / 05:45