É possível utilizar o Instr() em VBA para verificar se uma cadeia de caracteres contém outra cadeia de caracteres.

Esta função utiliza a seguinte sintaxe básica:

Instr(início, string1, string2, ...)

onde:

  • início Posição inicial da pesquisa
  • string1 A cadeia de caracteres a pesquisar
  • string2 : A cadeia de caracteres que está a tentar encontrar

O exemplo seguinte mostra como utilizar esta função na prática.

Exemplo: Utilizar o VBA para verificar se uma cadeia de caracteres contém outra cadeia de caracteres

Suponha que temos o seguinte conjunto de dados no Excel que contém informações sobre várias equipas de basquetebol:

Agora, suponha que gostaríamos de verificar se cada cadeia de caracteres na coluna Equipa contém "avs" algures na cadeia.

Podemos utilizar a seguinte sintaxe em VBA para verificar se cada cadeia de caracteres na coluna Equipa contém "avs" e, em caso afirmativo, devolver a linha inteira nas colunas D e E:

 Sub StringContains() Dim i As Integer , i_num As Integer For i = 2 To 9 If InStr(1, LCase(Range(" A " & i)), " avs ") 0 Then i_num = i_num + 1 Range(" D " & i_num & " :E " & i_num) = Range(" A " & i & " :B " & i).Value End If Next i End Sub 

Quando executamos esta macro, obtemos a seguinte saída:

Repare que cada uma das linhas que continha a cadeia "avs" algures na coluna Equipa é devolvida nas colunas D e E.

Neste exemplo, apenas duas equipas (Mavs e Cavs) continham "avs" na coluna Equipa.

Para procurar uma cadeia de caracteres diferente, basta substituir "avs" no código acima pela cadeia de caracteres à sua escolha.

Nota 1: No código, utilizámos Para i = 2 a 9 uma vez que as células A2 a A9 continham as cadeias de caracteres em que estávamos interessados. Pode alterar este intervalo consoante o intervalo de células que está a pesquisar.

Nota #2 : Pode encontrar a documentação completa para o Instr() em VBA aqui.