Funções de manipulação de strings VBA e Operatoros
⚡ Resumo Inteligente
Funções de manipulação de strings em VBA e Operators combinam, medem e extracTexto dentro de macros do Excel. Esta página explica o operador de concatenação, as funções Left, Right, Mid, Len e InStr, divisão e junção, e os erros que mais frequentemente interrompem o código de string.

Sequência VBA Operatoros
Dados de string são usados para armazenar dados compostos de números, caracteres e símbolos. “Jul-2015” é um exemplo de dados de string. Isto é constituído por
- Personagens (julho)
- Símbolo (-)
- Numbers (2015)
Operadores de string são usados para manipular dados de string. Por exemplo, você pode concatenar o valor de julho de 2015 das 3 primeiras letras do mês e do ano como “julho de 2015”.
A tabela a seguir mostra o operador de string VBA de concatenação.
| S / N | Operator | Descrição | Exemplo | saída |
|---|---|---|---|---|
| 1 | & | Concatenar: Este operador é usado para concatenar strings | “John” e “Doe” | Chambers and Partners |
Fonte de exemplo Code
MsgBox "John " & "Doe", vbOKOnly, "Concatenate Operator"
A execução do código acima produz o seguinte resultado
O símbolo "&" não é o único que aparece para unir textos, e a diferença entre os dois é importante quando há números envolvidos.
Diferença entre & e + na concatenação de strings
O VBA aceita tanto o caractere "&" quanto o sinal de mais entre dois valores de texto, por isso os iniciantes costumam tratá-los como intercambiáveis. O comportamento deles muda quando um dos operandos é um número ou um valor vazio, e apenas um deles é considerado seguro.
| Comportamento | & (E comercial) | + (mais) |
|---|---|---|
| Dois valores de texto | Junta-se a eles: “Guru” e “99” retorna Guru99 | Junta-se a eles: “Guru” + “99” retorna Guru99 |
| Texto e um número | Converte o número em texto: “Idade ” & 30 retorna Idade 30 | Gera um erro de incompatibilidade de tipo. |
| Duas sequências numéricas | “10” e “5” retornam 105 | “10” + “5” podem ser somados e retornar 15. |
| Um valor nulo | Trata valores nulos como uma string vazia. | Retorna nulo e descarta todo o resultado. |
💡 Dica: Use sempre o símbolo "&" para concatenação e reserve o sinal de mais para... operaçoes aritimeticasColoque um espaço antes e depois do caractere "&", pois a escrita "Total&" é lida pelo VBA como um caractere de declaração do tipo Long.
Funções de manipulação de strings VBA
A manipulação de strings VBA é um elemento importante em Excel VBA para programação de macros e operações de string. O Excel fornece vários tipos de funções de manipulação de strings VBA, como:
- Esquerdo: é usado para extract caracteres do lado esquerdo da string
- Certo: é usado para extract caracteres do lado direito da string
- Médio: é usado para extracuma substring do meio de uma string
- Len: é usado para encontrar o comprimento de uma string
- Instr: é usado para encontrar a posição de uma substring em uma string
- aparar: é usado para remover espaços das extremidades de uma string
- Substituir: é usado para trocar todas as ocorrências de uma substring por outra.
- UCase / LCase: são usados para converter uma string em maiúsculas ou minúsculas.
A tabela abaixo mostra a sintaxe de cada função com um exemplo prático, para que você possa copiar o padrão diretamente para uma macro.
| função | Sintaxe | Exemplo | saída |
|---|---|---|---|
| Esquerdo | Esquerda(string, comprimento) | Esquerda(“Jul-2015”, 3) | Jul |
| Certo | Direita(string, comprimento) | Direita(“Jul-2015”, 4) | 2015 |
| Médio | Meio(corda, início, comprimento) | Meados (“Jul-2015”, 5, 4) | 2015 |
| Len | Comprimento(string) | Len(“Jul-2015”) | 8 |
| Instr | InStr(início, string, substring) | InStr(1, “julho de 2015”, “-“) | 4 |
| aparar | Aparar(string) | Aparar(" Guru99 “) | Guru99 |
| Substituir | Substituir(string, localizar, substituir) | Substituir (“julho de 2015”, “-“, “/”) | Jul / 2015 |
| UCase | UCase(string) | UCase(“guru99”) | GURU 99 |
A macro abaixo combina várias dessas funções para reconstruir um rótulo de data a partir de suas partes.
Sub StringFunctionsDemo() Dim Source As String Dim MonthPart As String Dim YearPart As String Source = "July-2015" ' Take the first three characters MonthPart = Left(Source, 3) ' Take the last four characters YearPart = Right(Source, 4) MsgBox MonthPart & "-" & YearPart, vbOKOnly, "String Functions" End Sub
Ao executar a macro, é exibido "Jul-2015". Cada função retorna um novo valor e deixa a string original intacta, razão pela qual os resultados podem ser combinados com segurança em uma única expressão.
Todas essas funções operam em uma string por vez. Quando um único valor contém uma lista inteira, outras duas funções lidam melhor com a situação.
Como dividir e unir strings em VBA
Os dados colados no Excel geralmente chegam como um único valor longo com um separador entre cada item, como "Pepsi,Coca-Cola,Fanta,Suco". Ler isso com as funções MID e INSTR é lento e impreciso. O VBA oferece um conjunto de funções perfeitamente adequadas para essa tarefa.
Split A função recebe uma string delimitada e retorna um array com índice inicial zero, contendo um elemento por item. Junte-se Faz o inverso, recebendo um array e retornando uma única string com um separador entre os elementos. Observe que o método `Join` opera em um array, não em duas strings separadas.
Sub SplitAndJoinDemo() Dim Source As String Dim Items() As String Dim i As Long Source = "Pepsi,Coke,Fanta,Juice" ' Break the value into an array on every comma Items = Split(Source, ",") For i = LBound(Items) To UBound(Items) Sheet1.Cells(i + 1, 1).Value = Items(i) Next i ' Rebuild the list with a different separator MsgBox Join(Items, " | "), vbOKOnly, "Joined List" End Sub
O loop insere cada bebida em sua própria linha da planilha, e a caixa de mensagem exibe Pepsi | Coca-Cola | Fanta | Suco. Três pontos tornam esse padrão confiável em código de produção:
- Resultado baseado em zero: A função Split sempre retorna uma matriz numerada a partir de 0, independentemente do valor definido em Option Base, portanto, utilize LBound e UBound para controlar o loop, em vez de um número fixo.
- Declare como String(): Atribua o resultado a um array de strings dinâmico. Declarar um tamanho fixo primeiro causa um erro de compilação.
- Entrada vazia: Dividir uma string vazia retorna um array sem elementos, então teste com UBound antes de ler Items(0).
Mesmo com a função correta escolhida, o código de string falha de algumas maneiras previsíveis.
Erros comuns em strings VBA e como corrigi-los
A maioria dos erros de string no VBA do Excel tem uma pequena causa. Reconhecer o sintoma evita uma longa sessão de depuração.
- Incompatibilidade de tipos na concatenação: Foi utilizado um sinal de mais (+) entre o texto e um número. Substitua-o por um símbolo de "e comercial" (&), que converte o número automaticamente.
- InStr retorna 0: A substring não foi encontrada. A função InStr retorna 0 em vez de -1 em caso de falha, portanto, verifique se o valor é maior que zero antes de passar o resultado para a função Mid.
- Chamada de procedimento inválida no meio ou na esquerda: O comprimento solicitado é negativo ou a posição inicial é menor que 1. Proteja a chamada com Len para que o comprimento nunca exceda a string.
- Comparações que deveriam coincidir, mas não coincidem: Espaços em branco à direita de dados importados quebram a igualdade. Envolva ambos os lados em Trim e use StrComp quando a distinção entre maiúsculas e minúsculas precisar ser ignorada.
- Texto que não se tornará um número: Um valor como “1,200” falha na aritmética devido ao separador. Remova-o com Replace antes de converter com CLng.
Baixe o Excel contendo o código acima
Baixe a planilha do Excel acima. Code


