VBA – Função InStrRev – Localizar Texto a Partir da Direita

Written by

Mel Jenkins

Reviewed by

Steve Rynearson

Translated by

Daniel Caramello

Last updated on September 7, 2023

Este tutorial demonstrará como usar a função InStrRev do VBA para localizar o texto a partir da direita.

Função InStrRev

A função InStrRev do VBA procura a posição de uma substring em uma cadeia de caracteres. Ela retorna a posição contando da esquerda para a direita, mas realiza a pesquisa do final da cadeia de caracteres até o início.

VBA InStrRev – Localizar Substring

A função InStrRev do VBA pode ser usada para localizar a posição de uma substring dentro de uma string.

Sub InStrRevExemplo_1()
MsgBox InStrRev("ABCABC", "C") 'O resultado é: 6
MsgBox InStrRev("ABCABC", "BC") 'O resultado é: 5
MsgBox InStrRev("La La Land", "L") 'O resultado é: 7
MsgBox InStrRev("La La Land", "La") 'O resultado é: 7
MsgBox InStrRev("La La Land", "La ") 'O resultado é: 4
MsgBox InStrRev("La La Land", "M") 'O resultado é: 0
End Sub

VBA InStrRev – Posição Inicial

A função InStrRev do VBA pode iniciar a pesquisa de uma substring a partir de uma posição atribuída, contada da esquerda para a direita.

Sub InStrRevExemplo_2()
MsgBox InStrRev("La La Land", "L") 'O resultado é: 7
MsgBox InStrRev("La La Land", "L", 8) 'O resultado é: 7
MsgBox InStrRev("La La Land", "L", 7) 'O resultado é: 7
MsgBox InStrRev("La La Land", "L", 6) 'O resultado é: 4
MsgBox InStrRev("La La Land", "L", 4) 'O resultado é: 4
MsgBox InStrRev("La La Land", "L", 3) 'O resultado é: 1
End Sub

Sensibilidade de Maiúsculas e Minúsculas do InStrRev do VBA

A função InStrRev do VBA, por padrão, diferencia maiúsculas de minúsculas. Você pode alterar esse comportamento para não diferenciar maiúsculas de minúsculas usando um parâmetro opcional. Nesse caso, você também deve definir a posição inicial da pesquisa.

Sub InStrRevExemplo_3()
'InstrRev, por padrão, diferencia maiúsculas de minúsculas
MsgBox InStrRev("La La Land", "L") 'O resultado é: 7
MsgBox InStrRev("La La Land", "l") 'O resultado é: 0

'InstrRev pode executar pesquisas sem distinção entre maiúsculas e minúsculas
MsgBox InStrRev("La La Land", "L", -1, vbTextCompare) 'O resultado é: 7
MsgBox InStrRev("La La Land", "l", -1, vbTextCompare) 'O resultado é: 7
End Sub

VBA InStrRev – Último Espaço

A função InStrRev do VBA pode localizar a posição do último espaço em uma cadeia de caracteres.

Sub InStrRevExemplo_4()
MsgBox InStrRev("La La Land", " ")
'O resultado é: 6
MsgBox InStrRev("Leonardo da Vinci", " ")
'O resultado é: 12
MsgBox InStrRev("May the Force be with you", " ")
'O resultado é: 22

End Sub

VBA InStrRev – Penúltimo Espaço

A função InStrRev do VBA pode localizar a posição do penúltimo espaço em uma cadeia de caracteres. Podemos usar a função InStrRev do VBA para encontrar o último espaço em uma string e, em seguida, podemos usar novamente InStrRev com um novo ponto de partida para encontrar a posição do penúltimo espaço.

Sub InStrRevExemplo_5()
Dim UltimaPos As Integer

UltimaPos = InStrRev("May the Force be with you", " ")
MsgBox UltimaPos 'O resultado é: 22

Dim PenultimaPos As Integer

PenultimaPos = InStrRev("May the Force be with you", " ", UltimaPos - 1)
MsgBox PenultimaPos 'O resultado é: 17
'O InStrRev iniciou a busca por espaço logo antes do último espaço
'Ele encontrará o penúltimo espaço porque busca da direita para a esquerda
End Sub

VBA InStrRev – Retornar Nome do Arquivo

A função InStrRev do VBA pode ser usada para retornar facilmente o nome do arquivo a partir de uma string que contém o caminho e o nome do arquivo. Usaremos a função InStrRev com as funções VBA Len e VBA Right.

A função Len do VBA retorna o comprimento de uma cadeia de caracteres:

MsgBox Len("XBCX") 'O resultado é: 4

A função VBA Right retorna n caracteres do final de uma cadeia de caracteres:

MsgBox Right("ABCDE", 2) 'O resultado é: DE

Podemos usar a função InStrRev para localizar a última ocorrência de “\” no nome do caminho e usar a função Len para calcular o comprimento do nome do arquivo. Em seguida, podemos extrair o nome do arquivo.

Sub InStrRevExemplo_6()
Dim CaminhoEx As String
CaminhoEx = "C:\MeusArquivos\Outros\ArquivoExemplo.pdf"

Dim NomeArquivoEx As String


NomeArquivoEx = Right(CaminhoEx, Len(CaminhoEx) - InStrRev(CaminhoEx, "\"))
MsgBox NomeArquivoEx 'O resultado é: ArquivoExemplo.pdf

'Vamos decompor esse código
MsgBox Len(CaminhoEx)
'Esse é o comprimento do nome do caminho (41)


MsgBox InStrRev(CaminhoEx, "\")
'Essa é a posição do último \ na cadeia de caracteres

MsgBox Len(CaminhoEx) - InStrRev(CaminhoEx, "\")
'Esse é o comprimento do nome do arquivo (18)
'A diferença entre o comprimento total e a posição do último \ na cadeia de caracteres
'(41-18=23)

'Agora sabemos o comprimento do nome do arquivo e, é claro, ele está no final
'A função Right é ideal para essa situação
NomeArquivoEx = Right(CaminhoEx, Len(CaminhoEx) - InStrRev(CaminhoEx, "\"))

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