Vba: como substituir caracteres em uma string
Você pode usar o método Replace() em VBA para substituir caracteres em uma string.
Este método usa a seguinte sintaxe básica:
Substituir(expressão, localizar, substituir, iniciar, contar)
Ouro:
- expressão : a string na qual você deseja substituir os caracteres
- find : A string a ser encontrada
- replace : A string a ser usada como substituição
- start ( opcional ) : A posição inicial na string a ser pesquisada
- contagem ( opcional ) : O número de substituições a serem realizadas
Os exemplos a seguir mostram como usar esse método na prática com a seguinte lista de strings no Excel:
Exemplo 1: Use VBA para substituir todas as ocorrências de caracteres em uma string (diferencia maiúsculas de minúsculas)
Digamos que queremos substituir “this” por “THAT” em cada string.
Podemos criar a seguinte macro para fazer isso:
Sub ReplaceChar() Dim i As Integer For i = 2 To 8 Range(" B " & i) = Replace(Range(" A " & i), " this ", " THAT ") Next i End Sub
Quando executamos esta macro, recebemos a seguinte saída:
A coluna B exibe cada uma das strings na coluna A, com cada ocorrência de “isto” substituída por “AQUELE”.
Observe que esta substituição diferencia maiúsculas de minúsculas .
Ou seja, cada ocorrência de “isto” é substituída, mas cada ocorrência de “isto” é deixada sozinha.
Exemplo 2: Use VBA para substituir todas as ocorrências de caracteres em uma string (sem distinção entre maiúsculas e minúsculas)
Digamos que queremos substituir “this” (independentemente do caso) por “THAT” em cada string.
Podemos criar a seguinte macro para fazer isso:
Sub ReplaceChar() Dim i As Integer For i = 2 To 8 Range(" B " & i) = Replace(LCase(Range(" A " & i)), " this ", " THAT ") Next i End Sub
Quando executamos esta macro, recebemos a seguinte saída:
A coluna B exibe cada uma das strings na coluna A, com cada ocorrência de “isto” substituída por “AQUELE”.
Observe que esta substituição não diferencia maiúsculas de minúsculas .
Ou seja, toda ocorrência de “isto” (em maiúscula ou não) é substituída.
Conseguimos realizar essa substituição sem distinção entre maiúsculas e minúsculas usando o método LCase para primeiro converter cada string na coluna A em minúsculas antes de pesquisar “this” em cada string.
Exemplo 3: Use VBA para substituir as primeiras N ocorrências de um caractere em uma string
Suponha que queiramos substituir apenas a primeira ocorrência de “this” (independentemente do caso) por “THAT” em cada string.
Podemos criar a seguinte macro para fazer isso:
Sub ReplaceChar() Dim i As Integer For i = 2 To 8 Range(" B " & i) = Replace(LCase(Range(" A " & i)), " this ", " THAT ", Count:=1) Next i End Sub
Quando executamos esta macro, recebemos a seguinte saída:
A coluna B exibe cada uma das strings na coluna A com apenas a primeira ocorrência de “this” substituída por “THAT”.
Observe que usamos Count:=1 para substituir apenas a primeira ocorrência de uma string específica, mas você pode substituir 1 por qualquer valor que desejar para substituir as primeiras n ocorrências de uma string específica.
Nota : Você pode encontrar a documentação completa para o método VBA Replace aqui .
Recursos adicionais
Os tutoriais a seguir explicam como realizar outras tarefas comuns usando VBA:
VBA: Como contar ocorrências de caracteres em uma string
VBA: como verificar se uma string contém outra string
VBA: Como contar células com texto específico