VBA “like” não faz o que é suposto fazer

0

Eu tenho uma lista de cerca de 2.500 linhas e quero verificar se na primeira coluna as palavras "interno" seguido por ":" aparecem (o: pode estar em qualquer posição depois de estagiário) em um loop

A parte importante do código é assim:

For k = 1 To lastrowND
intern = Worksheets("new Data").Cells(k, 1).Value


If Not intern Like "*intern*:" Then

No entanto, este comando não filtra nada. Onde está o meu erro?

Muito obrigado

    
por Mario Adenauer 08.11.2016 / 15:36

2 respostas

4

Se os seus dados tiverem algo depois dos dois pontos, você precisará de um * adicional para testar o verdadeiro. ( *intern*:* )

O tipo de padrão regex assume que você quer os curingas iniciais e finais. Expressões regulares podem ser incrivelmente poderosas, então vale a pena gastar algum tempo para brincar com elas se você tiver tempo.

    
por 08.11.2016 / 17:39
4

Tente usar as expressões regulares como esta:

Dim strPattern As String: strPattern = "intern(.*?):"
Dim regEx As New RegExp

' ...

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

For k = 1 To lastrowND
   intern = Worksheets("new Data").Cells(k, 1).Value

   If Not regEx.Test(intern) Then
   ' ...
    
por 08.11.2016 / 16:20