Este tutorial demonstrará como usar a função Mid VBA para extrair caracteres do meio de uma string de texto.
Função Média
Função média obtém n caracteres
A função VBA Mid retorna n caracteres de uma string começando na posição m:
123456789 | Sub MidExample_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 média obtém n caracteres em uma variável
Conforme mostrado acima, você pode definir uma string simplesmente inserindo o texto entre aspas. Mas a função MID também funcionará com variáveis de string. Esses exemplos extrairão n caracteres de uma string começando na posição m.
12345678 | Sub MidExample_2 ()Dim StrEx As String 'Definir uma variável de stringStrEx = "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 média obtém n caracteres de uma célula
Strings podem ser definidas em 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 string e extraia n caracteres desse valor de Célula da Planilha começando na posição m.
1234567891011 | Sub MidExample_3 ()Dim StrEx As String 'Definir uma variável de string'Leia o valor da célula A1 na planilha Plan1StrEx = ThisWorkbook.Worksheets ("Sheet1"). 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 é: "o F" (observe o espaço no início)MsgBox Mid (StrEx, 2, 8) 'O resultado é: "ay the F"MsgBox Mid (StrEx, 3, 4) 'O resultado é: "y th"End Sub |
Função intermediária substitui n caracteres
Nos exemplos acima, a função Mid não alterou a string original. Ele retornou uma parte dele, deixando a string original intacta. A função Mid pode ser usada para substituir caracteres em uma string.
12345678910111213141516171819202122 | Sub MidExample_4 ()Dim StrEx As String 'Definir uma variável de stringSub MidExample_4 ()Dim StrEx As String 'Definir uma variável de stringStrEx = "Que a Força esteja com você"Mid (StrEx, 5, 1) = "VWXYZ"MsgBox StrEx 'O resultado é: "Que a Horce esteja com você"'Mid Function encontrou a posição 5 e substituiu 1 caractere na string originalStrEx = "Que a Força esteja com você"Mid (StrEx, 5, 3) = "VWXYZ"O resultado de MsgBox StrEx 'é: "Que VWX Horce esteja com você"'Mid Function encontrou a posição 5 e substituiu 3 caracteres na string originalStrEx = "Que a Força esteja com você"Mid (StrEx, 5, 8) = "VWXYZ"O resultado de MsgBox StrEx 'é: "Que VWXYZorce esteja com você"'Mid Function 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 intermediária extrair segunda palavra de uma frase
Podemos usar a função VBA Mid com a função VBA Instr para obter a segunda palavra em um texto.
A função VBA InStr pode retornar a posição de um caractere dentro do texto.
1 | InStr ("Duas palavras", "") 'O resultado é 4 |
Podemos usar InStr para encontrar o primeiro espaço, então podemos usar novamente InStr iniciando a pesquisa após o primeiro espaço para encontrar o segundo espaço no texto. Finalmente, 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).
12345678910111213141516171819202122232425 | Sub MidExample_5 ()Dim StrEx As String 'Definir uma variável de stringDim StartPos As IntegerDim EndPos As IntegerDim SecondWord As StringStrEx = "James Earl Jones é um ator"StartPos = InStr (StrEx, "")'O resultado é 6'Encontre a posição do primeiro espaçoEndPos = InStr (StartPos + 1, StrEx, "")'O resultado é 11'Encontre a posição do segundo espaço, iniciando a pesquisa após o primeiro espaçoSecondWord = Mid (StrEx, StartPos + 1, EndPos - StartPos - 1)'Mid extrai os caracteres começando após o primeiro espaço (StartPos +1)'Mid usa também o comprimento da segunda palavra.'Essa é a diferença entre as posições dos espaços -1MsgBox SecondWord'O resultado é EarlEnd Sub |