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.

  • 🔤 Dados em formato de string: Um valor formado por caracteres, símbolos e números, como o texto Jul-2015.
  • Concatenação Operator: O símbolo "&" une duas strings, então "John " & "Doe" retorna John Doe.
  • ✂️ ExtracFunções de ção: Left, Right e Mid extraem uma substring do início, do fim ou do meio de um valor.
  • 📏 Funções de medição: Len conta os caracteres e InStr retorna a posição onde uma substring começa.
  • 🧩 Dividir e unir: A função `Split` divide uma string delimitada em uma matriz, e a função `Join` reconstrói uma matriz em uma única string.
  • ⚠️ Erros comuns: A maioria das comparações falhas ocorre devido a incompatibilidade de tipos, InStr retornando zero e espaços em branco no final da string.

Funções de manipulação de strings em VBA e Operatoros

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

Sequência VBA OperaExemplo de fonte Code

MsgBox "John " & "Doe", vbOKOnly, "Concatenate Operator"

A execução do código acima produz o seguinte resultado

Sequência VBA OperaExemplo de fonte Code

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

Perguntas Frequentes

Uma string de comprimento variável comporta até aproximadamente dois bilhões de caracteres, e uma string de comprimento fixo comporta até 65,400. Uma célula de planilha, no entanto, armazena apenas 32,767 caracteres, portanto, valores mais longos são truncados quando gravados em uma planilha.

O sinal de igual compara os valores diferenciando maiúsculas de minúsculas por padrão. Use StrComp(a, b, vbTextCompare) para obter um resultado que ignore maiúsculas e minúsculas, ou coloque Option Compare Text no início do módulo para alterar o padrão para todo o módulo.

O operador "&" converte cada operando em texto antes da concatenação, portanto, "10 & 5" retorna a string "105". Mantenha os valores numéricos e some-os primeiro, depois concatene o resultado se ele precisar aparecer dentro de uma mensagem.

Sim. Descreva a entrada e a saída desejada, por exemplo, ex.tracO código antes do primeiro hífen é analisado por um assistente de IA que retorna uma expressão Left e InStr. Teste-o em casos extremos, como a ausência de um hífen.

Sim. Cole uma expressão aninhada, como Mid com InStr dentro dela, e um assistente de IA a dividirá em etapas, nomeará cada argumento e sinalizará o caso em que InStr retorna zero e a chamada falha.

Resuma esta postagem com: