Dim pos AsInteger
pos = InStr("find the comma, in the string",",")
retornará 15 em pos
Se não for encontrado, retornará 0
Se você precisar encontrar a vírgula com uma fórmula do Excel, poderá usar o =FIND(",";A1) função
Observe que se você deseja usar Instrpara encontrar a posição de uma string que não diferencia maiúsculas de minúsculas, use o terceiro parâmetro de Instr e dê a const vbTextCompare(ou apenas 1 para hard-dreads).
Dim posOf_A AsInteger
posOf_A = InStr(1,"find the comma, in the string","A", vbTextCompare)
lhe dará um valor de 14.
Observe que você deve especificar a posição inicial neste caso, conforme indicado na especificação que eu vinculei: O argumento inicial é necessário se a comparação for especificada.
Com base na resposta de Rene, você também pode escrever uma função que retorne TRUE se a substring estiver presente ou FALSE se não estiver:
PublicFunction Contains(strBaseString AsString, strSearchTerm AsString)AsBoolean'Purpose: Returns TRUE if one string exists within anotherOnErrorGoTo ErrorMessage
Contains = InStr(strBaseString, strSearchTerm)ExitFunction
ErrorMessage:
MsgBox "The database has generated an error. Please contact the database administrator, quoting the following error message: '"& Err.Description &"'", vbCritical,"Database Error"EndEndFunction
Que tipo de erro de banco de dados estamos esperando nesta função? A interceptação de erro e a mensagem de erro parecem ser totalmente inúteis.
Roobie Nuby
11
@RoobieNuby Esse é apenas o meu tratamento de erros padrão. Eu o incluo em todas as minhas funções, porque se algo der errado, quero que a equipe me ligue, para não tentar consertar isso sozinho.
INSTR
para você?Respostas:
Use a função Instr
retornará 15 em pos
Se não for encontrado, retornará 0
Se você precisar encontrar a vírgula com uma fórmula do Excel, poderá usar o
=FIND(",";A1)
funçãoObserve que se você deseja usar
Instr
para encontrar a posição de uma string que não diferencia maiúsculas de minúsculas, use o terceiro parâmetro de Instr e dê a constvbTextCompare
(ou apenas 1 para hard-dreads).lhe dará um valor de 14.
Observe que você deve especificar a posição inicial neste caso, conforme indicado na especificação que eu vinculei: O argumento inicial é necessário se a comparação for especificada.
fonte
Você também pode usar a palavra especial
like
:fonte
Há também o InStrRev função , que faz o mesmo tipo de coisa, mas começa a pesquisar do final do texto ao início.
Por resposta de @ rene ...
... ainda retornaria 15 para pos, mas se a sequência tiver mais de uma sequência de pesquisa, como a palavra "the", então:
... retornaria 20 ao pos, em vez de 6.
fonte
Com base na resposta de Rene, você também pode escrever uma função que retorne TRUE se a substring estiver presente ou FALSE se não estiver:
fonte