Devolve uma Variante (Longo) especificando a posição da primeira ocorrência de uma cadeia dentro de outra.
Sintaxe
InStr([start, ] string1, string2 [, compare ] )
A sintaxe da função EmCad tem os seguintes argumentos:
| Argumento | Descrição |
|---|---|
| começar | Opcional. Expressão numérica que define a posição inicial para cada procura. Se for omitida, a procura começa na posição do primeiro caráter. Se iniciar contiver Nulo, ocorrerá um erro. O argumento início é necessário se comparar for especificado. |
| cadeia1 | Obrigatório. Expressão de cadeia a procurar. |
| cadeia2 | Obrigatório. Expressão de cadeia procurada. |
| comparar | Opcional. Especifica o tipo de comparação de cadeias. Se comparar for Nulo, ocorre um erro. Se comparar for omitido, a definição OptionCompare determina o tipo de comparação. Especifique um LCID (LocaleID) válido para utilizar regras específicas de região na comparação. |
Sugestão
O Construtor de Expressões tem IntelliSense, para que possa ver que argumentos a sua expressão necessita.
Definições
As definições do argumento de comparação são:
| Constante | Valor | Descrição |
|---|---|---|
| vbUseCompareOption | -1 | Efetua uma comparação utilizando a definição da instrução Option Compar . |
| vbBinaryCompare | 0 | Efetua uma comparação binária. |
| vbTextCompare | 1 | Efetua uma comparação textual. |
Valores Devolvidos
| Se | Devoluções EmCad |
|---|---|
| string1 é de comprimento zero | 0 |
| cadeia1 é Nulo | Null |
| string2 é de comprimento zero | Início |
| cadeia2 é Nulo | Null |
| cadeia2 não foi encontrada | 0 |
| string2 encontra-se em string1 | Posição na qual a correspondência é encontrada |
| start > string2 | 0 |
Observações
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 byte.
Exemplos
Utilizar a função EmCad numa expressão Pode utilizar EmCad onde puder utilizar expressões. Por exemplo, se quiser localizar a posição do primeiro ponto final (.) num campo que contenha endereços IP (denominado Endereço IPAd), pode utilizar EmCad para localizá-la, desta forma:
EmStr(1,[Endereço IPAddress],".")
A função EmCad 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, você pode usar outras funções, operando na saída da função EmCad , para extrair a parte do endereço IP que precede o primeiro período, assim:
Esquerda([Endereço IPAddress],(InStr(1,[IPAddress],".")-1))
Neste exemplo, EmCad(1,[IPAddress],".") Devolve a posição do primeiro período. A subtração 1 determina quantos carateres precedem o primeiro período, neste caso, 2. Em seguida, a função Esquerda extrai esses vários carateres da porção esquerda do campo IPAddress, devolvendo o valor 10.
Utilizar InStr em código VBA
Nota
Os exemplos seguintes demonstram a utilização desta função no módulo VBA (Visual Basic for Applications).
Este exemplo utiliza a função EmCad 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.