VBA – Função Mid – Extrair Caracteres do Meio de um Texto
In this Article
Este tutorial demonstrará como usar a função Mid do VBA para extrair caracteres do meio de uma cadeia de texto.
Função Mid
Função Mid – Obter n Caracteres
A função Mid do VBA retorna n caracteres de uma cadeia de caracteres a partir da posição m:
Sub MidExemplo_1()
MsgBox Mid("ABCDEFGHI", 4, 1) 'O resultado é: "D"
MsgBox Mid("ABCDEFGHI", 4, 2) 'O resultado é: "DE"
MsgBox Mid("ABCDEFGHI", 4, 50) 'O resultado é: "DEFGHI"
MsgBox Mid("ABCDEFG hI", 6, 1) 'O resultado é: "F"
MsgBox Mid("ABCDEFG hI", 6, 2) 'O resultado é: "FG"
MsgBox Mid("ABCDEFG hI", 6, 4) 'O resultado é: "FG h"
End Sub
Função Mid – Obter n Caracteres em uma Variável
Como mostrado acima, você pode definir uma cadeia de caracteres simplesmente digitando o texto entre aspas. Mas a função MID também funciona com variáveis de cadeia de caracteres. Esses exemplos extrairão n caracteres de uma cadeia de caracteres a partir da posição m.
Sub MidExemplo_2()
Dim StrEx As String 'Definir uma variável de cadeia de caracteres
StrEx = "ABCDEFGHI"
MsgBox Mid(StrEx, 2, 1) 'O resultado é: "B"
MsgBox Mid(StrEx, 2, 2) 'O resultado é: "BC"
MsgBox Mid(StrEx, 2, 50) 'O resultado é: "BCDEFGHI"
End Sub
Função Mid – Obter n Caracteres de uma Célula
As cadeias de caracteres podem ser definidas no código VBA, mas você também pode usar valores de células. Leia o valor de uma célula, mantenha-o em uma variável de cadeia de caracteres e extraia n caracteres desse valor da célula da planilha a partir da posição m
Sub MidExample_3()
Dim StrEx As String 'Defina uma variável de cadeia de caracteres
'Ler o valor da célula A1 na planilha1
StrEx = ThisWorkbook.Worksheets("Planilha1").Range("A1").Value
'Para este exemplo, o valor da célula A1 é "Que a Força esteja com você"
MsgBox Mid(StrEx, 4, 6) 'O resultado é: " a For" (Observe o espaço no início)
MsgBox Mid(StrEx, 2, 8) 'O resultado é: "ue a For"
MsgBox Mid(StrEx, 3, 4) 'O resultado é: "e a "
End Sub
Função Mid – Substituir n Caracteres
Nos exemplos acima, a função Mid não alterou a cadeia de caracteres original. Ela retornou uma parte dela, deixando a string original intacta. A função Mid pode ser usada para substituir caracteres em uma cadeia de caracteres.
Sub MidExemplo_4()
Dim StrEx As String 'Definir uma variável de cadeia de caracteres
StrEx = "Que a Força esteja com você"
Mid(StrEx, 5, 1) = "VWXYZ"
MsgBox StrEx 'O resultado é: "Que V Força esteja com você"
'A função Mid encontrou a posição 5 e substituiu 1 caractere na string original
StrEx = "Que a Força esteja com você"
Mid(StrEx, 5, 3) = "VWXYZ"
MsgBox StrEx 'O resultado é: "Que VWXorça esteja com você"
'A função Mid encontrou a posição 5 e substituiu 3 caracteres na string original
StrEx = "Que a Força esteja com você"
Mid(StrEx, 5, 8) = "VWXYZ"
MsgBox StrEx 'O resultado é: "Que VWXYZça esteja com você"
'A função Mid encontrou a posição 5 e tentou substituir 8 caracteres.
'"VWXYZ" tem apenas 5 caracteres, portanto, apenas 5 caracteres foram substituídos.
End Sub
Função Mid – Extrair a Segunda Palavra de uma Frase
Podemos usar a função Mid do VBA com a função Instr do VBA para obter a segunda palavra em um texto.
A função InStr do VBA pode retornar a posição de um caractere dentro do texto.
InStr("Duas Palavras", " ") 'O resultado é 5
Podemos usar InStr para encontrar o primeiro espaço e, em seguida, podemos usar novamente InStr iniciando a pesquisa após o primeiro espaço para encontrar o segundo espaço no texto. Por fim, podemos usar a função Mid para extrair a palavra porque sabemos a posição inicial da segunda palavra e seu comprimento (a diferença entre as posições dos dois espaços).
Sub MidExemplo_5()
Dim StrEx As String 'Definir uma variável de cadeia de caracteres
Dim PosInicial As Integer
Dim PosFinal As Integer
Dim SegundaPalavra As String
StrEx = "James Earl Jones é um Ator"
PosInicial = InStr(StrEx, " ")
'O resultado é 6
'Encontrar a posição do primeiro espaço
PosFinal = InStr(PosInicial + 1, StrEx, " ")
'O resultado é 11
'Encontrar a posição do segundo espaço iniciando a busca após o primeiro espaço
SegundaPalavra = Mid(StrEx, PosInicial + 1, PosFinal - PosInicial - 1)
'Mid extrai os caracteres que começam após o primeiro espaço (PosInicial + 1)
'Mid também usa o comprimento da segunda palavra.
'Essa é a diferença entre as posições dos espaços -1
MsgBox SegundaPalavra
'O resultado é Earl
End Sub