VBA – Função Mid – Extrair Caracteres do Meio de um Texto

Written by

Mel Jenkins

Reviewed by

Steve Rynearson

Translated by

Daniel Caramello

Last updated on September 6, 2023

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
vba-free-addin

Exemplos de Add-ins de Códigos VBA

Acesse facilmente todos os exemplos de código que se encontram em nosso site.

Simply navigate to the menu, click, and the code will be inserted directly into your module. .xlam add-in.

(Nenhuma instalação necessária!)

Baixe de Graça

Retornar aos Exemplos de Códigos VBA