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 InStr 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 iniciar contiver Nulo, ocorrerá um erro. O argumento inícioserá necessário se comparar for especificado. |
|
cadeia1 |
Obrigatório. Expressão de cadeia a ser pesquisada. |
|
cadeia2 |
Obrigatório. Expressão de cadeia 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 definição Comparação de Opções determina o tipo de comparação. Especifique um LCID (LocaleID) válido para utilizar regras específicas da região na comparação. |
Dica: O Construtor de Expressões tem o IntelliSense, pelo que pode ver os argumentos de que a expressão necessita.
Configurações
As definições do argumento comparar são:
|
Constante |
Valor |
Descrição |
|---|---|---|
|
vbUseCompareOption |
-1 |
Efetua uma comparação com a definição da instrução Comparação de Opções . |
|
vbBinaryCompare |
0 |
Efetua uma comparação binária. |
|
vbTextCompare |
1 |
Efetua uma comparação textual. |
Valores devolvidos
|
If |
InStr devolve |
|---|---|
|
string1 é de comprimento zero |
0 |
|
string1 é Null |
Nulo |
|
string2 é de comprimento zero |
início |
|
string2 é Nulo |
Nulo |
|
a cadeia2 não foi encontrada |
0 |
|
A cadeia2 encontra-se na cadeia1 |
Posição na qual a correspondência é encontrada |
|
iniciar > cadeia2 |
0 |
Comentários
A função InStrB é utilizada com dados de bytes contidos numa cadeia. Em vez de devolver a posição do caráter da primeira ocorrência de uma cadeia dentro de outra, InStrB devolve a posição de byte.
Exemplos
Utilizar a função InStr numa expressão Pode utilizar InStr onde quer que possa utilizar expressões. Por exemplo, se quiser encontrar a posição do primeiro período (.) num campo que contém endereços IP (denominado IPAddress), pode utilizar o InStr para o localizar, da seguinte forma:
InStr(1,[IPAddress],".")
A função InStr examina cada valor no campo IPAddress e devolve a posição do primeiro período. Assim, se a primeira parte do endereço IP for 10., a função devolve o valor 3.
Em seguida, pode utilizar 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 forma:
Left([IPAddress],(InStr(1,[IPAddress],".") -1))
Neste exemplo, InStr(1,[IPAddress],".") devolve a posição do primeiro período. Subtrair 1 determina quantos carateres precedem o primeiro período, neste caso, 2. Em seguida, a função Esquerda extrai tantos carateres da parte esquerda do campo IPAddress, devolvendo o valor 10.
Utilizar InStr no código VBA
Observação: Os exemplos que se seguem demonstram a utilização desta função num módulo VBA (Visual Basic for Applications).
Este exemplo utiliza a função InStr para devolver a posição da primeira ocorrência de uma cadeia 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.