Escolha seu idioma de preferência

Strings no VBA


String é o tipo de dado indicado para armazenar texto no VBA.

    Dim VarTexto As String 'Declaração de variável do tipo String

Para armazenar informações de texto em uma variável String o conteúdo deve estar entre aspas duplas (" "):

    Dim VarTexto As String
    VarTexto = "Algum Nome"

Apesar de ser possível guardar informações numéricas em formato de texto, elas não se comportarão da mesma maneira que em formato numérico, modificando e limitando seus possíveis operadores.

      Dim VarTexto As String
      Dim VarNum As Single

      VarTexto = "6" + "3"
      MsgBox VarTexto 'Obterá como resultado "63" em formato de texto

      VarNum = 6 + 3
      MsgBox VarNum 'Resulta em 9

      VarTexto = "6" / "3"
      'Gerará um erro: esse operador não existe para String

      VarNum = 6 / 3 
      'Fará a divisão normalmente

A seguir veremos as principais funções pré-definidas de texto para manipulação de Strings em VBA.


Principais Funções de Texto VBA

VBA UCase e LCase

As funções UCase e LCase tornam uma cadeia de caracteres em letras maiúsculas e em letras minúsculas, respectivamente.

Função String Exemplo Resultado
UCase Torna a cadeia de caracteres maiúscula
Sub LetraMaiuscula()

VarTexto = "Exemplo De Texto"

MsgBox UCase(VarTexto)

End Sub
Função Ucase
EXEMPLO DE TEXTO
LCase Torna a cadeia de caracteres minúscula
Sub LetraMinuscula()

VarTexto = "Exemplo De Texto"

MsgBox LCase(VarTexto)

End Sub
Função Lcase
exemplo de texto

UCase e LCase são funções importantes para padronização de dados, uma vez que nem todas as suas fontes estarão na mesma caixa (caixa alta ou caixa baixa).


VBA StrConv

Outra função com mais opções para alterar a caixa do texto é a StrConv. (que pode funcionar como UCase e LCase).

Ao utilizar StrConv(string, conversion) é necessário argumentar o tipo conversão desejada.

Valor (conversion) Equivalente Descrição
StrConv(string,1) vbUpperCase Converte tudo para maiúsculas
StrConv(string,2) vbLowerCase Converte tudo para minúsculas
StrConv(string,3) vbProperCase Converte as primeiras letras para maiúsculas e as demais para minúsculas

Abaixo um exemplo de StrConv utilizando vbProperCase:

Função Argumento Exemplo Resultado
StrConv vbProperCase
Sub PrimeiraMaiuscula()

VarTexto = "exeMplo de texto"

MsgBox StrConv(VarTexto, 3) 
'StrConv(string, conversion)

End Sub
Função StrConv
Exemplo De Texto

VBA LTrim, RTrim e Trim

As funções LTrim, RTrim e Trim servem para remover espaços nas extremidades de uma String:

Função String Exemplo Resultado
LTrim Remove o espaços na extremidade esquerda
Sub EspacosEsquerda()

VarTexto = "   Exemplo de Texto   "

MsgBox ("Antes do LTrim: " & VarTexto & "..." _
 & vbCrLf & vbCrLf & _
 "Depois do LTrim: " & LTrim(VarTexto) & "...")

End Sub
Função LTrim
Exemplo de Texto ...
RTrim Remove espaços na extremidade direita
Sub EspacosDireita()

VarTexto = "   Exemplo de Texto   "

MsgBox ("Antes do RTrim: " & VarTexto & "..." _
 & vbCrLf & vbCrLf & _
"Depois do RTrim: " & RTrim(VarTexto) & "...")

End Sub
Função RTrim
Exemplo de Texto...
Trim Remove espaços em ambas as extremidade
Sub Espacos()

VarTexto = "   Exemplo de Texto   "

MsgBox ("Antes do Trim: " & VarTexto & "..." _
 & vbCrLf & vbCrLf & _
 "Depois do Trim: " & Trim(VarTexto) & "...")

End Sub
Função Trim
Exemplo de Texto...

Foi colocado os "..." depois da variável para evidenciar a redução dos espaços.

vbCrLf é um comando destinado a adicionar uma linha ("Enter") a String.


VBA Len

Len é uma função que retorna o número de caracteres totais em uma String.

Função String Exemplo Resultado
Len Total de caracteres
Sub Comprimento()

VarTexto = "Exemplo De Texto"

MsgBox Len(VarTexto)

End Sub
Função Len
22

Todos os caracteres são contabilizados, inclusive espaços em branco.

Len pode ser aplicado como um validador simples de informações.

Sub validarCPF()
    Dim cpfcliente As String
    cpfcliente = Inputbox("Qual o CPF do cliente? (digite apenas os números)")
    If Len(cpfcliente) = 11 Then
    'Todo CPF deve ter 11 caracteres, se contados apenas os números
        MsgBox "Iremos processar o seu pedido em breve."
        '...código para realizar ações
    Else
        MsgBox "CPF inválido. Verifique as informações inseridas"
    End If
End Sub

VBA InStr e InStrRev

As funções InStr e InStrRev procuram dentro de uma String determinado texto e retornam (contando da esquerda para direita em quantidade de caracteres) a posição em que ela aparece.

Função String Exemplo Resultado
InStr Busca a posição de ocorrência da esquerda para a direita
Sub DentroDaString()

VarTexto = "exemplo de texto"

MsgBox InStr(VarTexto, "t")

End Sub
Função InStr
12
InStrRev Busca a posição de ocorrência da direita para a esquerda
DentroDaStringReversa()

VarTexto = "exemplo de texto"

MsgBox InStrRev(VarTexto, "t")

End Sub
Função InStrRev
15

Estas funções podem ser muito úteis quando utilizadas juntamente Left, Right como veremos mais adiante.

Em ambos os casos, InStr e InStrRev retornam:

  • A posição, contada em número de caracteres partir do início da String, ou seja, contando da esquerda para direita.
  • A posição da primeira ocorrência dentro da String,(InStr a mais a esquerda, InStrRev a mais a direita).

Caso seja retornado 0, significa que a ocorrência procurada não foi encontrada na String.


VBA Left, Right e Mid

As funções Left, Right e Mid são utilizadas para extrair partes de uma linha de texto (String).

    MsgBox Left("Exemplo texto", 3) 'Retornará "Exe"
    MsgBox Right("Exemplo texto", 3) 'Retornará "xto"
    MsgBox Mid("Exemplo texto", 3,4) 'Retornará "empl"

As funções Left, Right e Mid podem ser usadas em conjunto com outras funções (como Len, InStr e InStrRev) para resultados com maior utilidade.

Função String Exemplo Resultado
Left Extrai caracteres a esquerda de uma determinada posição
Sub CaracteresEsquerda()

VarTexto = "Exemplo de Texto"

Espaco = InStr(VarTexto, " ")
'Detecta a posição do primeiro espaço (a partir da esquerda)
'Espaco = 8

MsgBox Left(VarTexto, Espaco - 1)
'Left(string, [length])
'Para extrair a primeira palavra

End Sub
Função Left
Exemplo
Right Extrai caracteres a direita de uma determinada posição
Sub CaracteresDireita()

VarTexto = "Exemplo de Texto"

Espaco = InStrRev(VarTexto, " ")
'Detecta a posição do primeiro espaço (a partir da direita)
'Espaco = 11
Espaco = Len(VarTexto) - Espaco
'Para extrair a última palavra
'Espaco = 16 - 11

MsgBox Right(VarTexto, Espaco)
'Right(string, [length])

End Sub
Função Right
Texto
Mid Extrai caracteres do interior da string, entre determinadas posições
Sub CaracteresMeio()

VarTexto = "Exemplo de Texto"

Esp1 = InStr(VarTexto, " ")
'Esp1 = 8

Esp2 = InStrRev(VarTexto, " ")
'Esp2 = 11

Tam = Esp2 - Esp1
MidText = Mid(VarTexto, Esp1, Tam)
'Mid(string, start, [length])

MsgBox Trim(MidText)

End Sub
Função Mid
de

Nos argumentos da função Mid deve ser indicada a posição inicial e o número de caracteres a se extrair.


VBA Replace

A Função Replace é utilizada para trocar partes do texto por outra desejada.

    Dim VarTexto As String
    VarTexto = "Sempre, Sempre estude VBA"

    MsgBox Replace(VarTexto, "Sempre", "Super")

Função StrReverse

VBA String para numéricos

É possível converter um dado com tipo String para número com auxílio de funções:

Dim VarInt As Integer
VarInt = CInt("34") 'Converte "34" para o inteiro 34
MsgBox VarInt+3 'Retornará 37
Função Definição
CByte Converte uma String para o tipo Byte
CInt Converte uma String para o tipo Integer
CLng Converte uma String para o tipo Long
CSng Converte uma String para o tipo Single
CDbl Converte uma String para o tipo Double
CCur Converte uma String para o tipo Currency
CDec Converte uma String para o tipo Decimal

É possível converter um número para uma String utilizando a função CStr

Texto = CStr(33) 'Converte 33 para "33"
MsgBox Texto & "a" 'Retorna "33a"



Fixando o Aprendizado

Exercício Sugerido

Letra Maiúscula



SuperExcelVBA.com é um site voltado ao aprendizado de VBA. Exemplos e explicações podem ter sido simplificados para maior e mais veloz compreensão. Estamos constantemente nos atualizando e corrigindo erros, porém não existe garantia sobre o conteúdo disponível no site. Todos os direitos reservados.

Excel ® é uma marca registrada da Microsoft Corporation.

© 2019 SuperExcelVBA | SOBRE

Protected by Copyscape