Respuestas:
Use la función Instr
Dim pos As Integer
pos = InStr("find the comma, in the string", ",")
devolverá 15 en pos
Si no se encuentra, devolverá 0
Si necesita encontrar la coma con una fórmula de Excel, puede usar la =FIND(",";A1)
función.
Tenga en cuenta que si desea usar Instr
para encontrar la posición de una cadena que no distingue entre mayúsculas y minúsculas, use el tercer parámetro de Instr y dele la constante vbTextCompare
(o solo 1 para troqueles).
Dim posOf_A As Integer
posOf_A = InStr(1, "find the comma, in the string", "A", vbTextCompare)
le dará un valor de 14.
Tenga en cuenta que debe especificar la posición de inicio en este caso como se indica en la especificación que vinculé: el argumento de inicio es obligatorio si se especifica la comparación.
También puedes usar la palabra especial like
:
Public Sub Search()
If "My Big String with, in the middle" Like "*,*" Then
Debug.Print ("Found ','")
End If
End Sub
También existe la función InStrRev que hace el mismo tipo de cosas, pero comienza a buscar desde el final del texto hasta el principio.
La respuesta de Per @ rene ...
Dim pos As Integer
pos = InStrRev("find the comma, in the string", ",")
... aún devolvería 15 a pos, pero si la cadena tiene más de una de la cadena de búsqueda, como la palabra "the", entonces:
Dim pos As Integer
pos = InStrRev("find the comma, in the string", "the")
... devolvería 20 a pos, en lugar de 6.
Sobre la base de la respuesta de Rene, también podría escribir una función que devolviera VERDADERO si la subcadena estaba presente o FALSO si no fuera así:
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
Funciona para ti?