Função InStr

Aplica-se a
Access para Microsoft 365 Access 2024 Access 2021 Access 2019 Access 2016

Retorna uma Variante (Longo) que especifica a posição da primeira ocorrência de uma cadeia em outra.

Veja alguns exemplos

Sintaxe

InStr([start, ] string1, string2 [, compare ] )

A sintaxe da função EmSeq tem estes argumentos:

Argumento Descrição
início Opcional. Expressão numérica que define a posição inicial para cada pesquisa. Se omitido, a pesquisa começará na posição do primeiro caractere. Se start contains Null, ocorrerá um erro. O argumento inícioserá necessário se comparar for especificado.
cadeia1 Obrigatório. Expressão de cadeia de caracteres que está sendo pesquisada.
cadeia2 Obrigatório. Expressão de cadeia de caracteres procurada.
comparar Opcional. Especifica o tipo de comparação de cadeia de caracteres. Se comparar for Nulo, ocorrerá um erro. Se comparar for omitido, a configuração OptionCompare determinará o tipo de comparação. Especifique um LCID válido (LocaleID) para usar regras específicas de localidade na comparação.

Dica

O Construtor de Expressões tem IntelliSense, para que você possa ver quais argumentos sua expressão exige.

Configurações

As configurações de argumento de comparação são:

Constante Valor Descrição
vbUseCompareOption -1 Executa uma comparação usando a configuração da instrução Option Compare .
vbBinaryCompare 0 Executa uma comparação binária.
vbTextCompare 1 Realiza uma comparação textual.

Valores retornados

If EmSeq retorna
string1 tem comprimento zero 0
string1 é Nulo Nulo
string2 tem comprimento zero Início
string2 is Null Nulo
string2 não foi encontrada 0
string2 é encontrado em string1 Posição em que a correspondência é encontrada
start > string2 0

Comentários

A função InStrB é usada com dados de byte contidos em uma cadeia de caracteres. Em vez de retornar a posição do caractere da primeira ocorrência de uma cadeia de caracteres dentro de outra, InStrB retorna a posição do byte.

Exemplos

Usar a função EmSeq em uma expressão Você pode usar InStr sempre que puder usar expressões. Por exemplo, se você quiser localizar a posição do primeiro ponto (.) em um campo que contém endereços IP (chamado IPAddress), poderá usar InStr para localizá-lo, da seguinte maneira:

InStr(1,[IPAddress],".")

A função EmSeq examina cada valor no campo IPAddress e retorna a posição do primeiro período. Portanto, se a primeira parte do endereço IP for 10., a função retornará o valor 3.

Em seguida, você pode usar outras funções, operando na saída da função InStr , para extrair a parte do endereço IP que precede o primeiro período, da seguinte maneira:

Left([IPAddress],(InStr(1,[IPAddress],".")-1))

Neste exemplo, InStr(1,[IPAddress],".") retorna a posição do primeiro período. A subtração de 1 determina quantos caracteres precedem o primeiro ponto, neste caso, 2. Em seguida, a função Left extrai esse número de caracteres da parte esquerda do campo IPAddress, retornando o valor 10.

Usar InStr no código VBA 

Observação

Os exemplos a seguir demonstram o uso dessa função em um módulo do Visual Basic for Applications (VBA).

Este exemplo usa a função EmSeq para retornar a posição da primeira ocorrência de uma cadeia de caracteres dentro de outra.


Dim SearchString, SearchChar, MyPos
SearchString ="XXpXXpXXPXXP"    ' String to search in.
SearchChar = "P"    ' Search for "P".
' A textual comparison starting at position 4. Returns 6.
MyPos = Instr(4, SearchString, SearchChar, 1)    
' A binary comparison starting at position 1. Returns 9.
MyPos = Instr(1, SearchString, SearchChar, 0)
' Comparison is binary by default
' (last argument is omitted).
MyPos = Instr(SearchString, SearchChar)    ' Returns 9.
MyPos = Instr(1, SearchString, "W")    ' Returns 0.

Veja Também

As funções de cadeia de caracteres e como usá-las