Respostas:
Use a função Instr
Dim pos As Integer
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 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 const vbTextCompare
(ou apenas 1 para hard-dreads).
Dim posOf_A As Integer
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.
Você também pode usar a palavra especial like
:
Public Sub Search()
If "My Big String with, in the middle" Like "*,*" Then
Debug.Print ("Found ','")
End If
End Sub
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 ...
Dim pos As Integer
pos = InStrRev("find the comma, in the string", ",")
... ainda retornaria 15 para pos, mas se a sequência tiver mais de uma sequência de pesquisa, como a palavra "the", então:
Dim pos As Integer
pos = InStrRev("find the comma, in the string", "the")
... retornaria 20 ao pos, em vez de 6.
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:
Public Function Contains(strBaseString As String, strSearchTerm As String) As Boolean
'Purpose: Returns TRUE if one string exists within another
On Error GoTo ErrorMessage
Contains = InStr(strBaseString, strSearchTerm)
Exit Function
ErrorMessage:
MsgBox "The database has generated an error. Please contact the database administrator, quoting the following error message: '" & Err.Description & "'", vbCritical, "Database Error"
End
End Function
INSTR
para você?