Retorna uma Variante (Longo) que especifica a posição da primeira ocorrência de uma cadeia em outra.
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.