Excel - Funcion InStr no funciona¿?

 
Vista:

Funcion InStr no funciona¿?

Publicado por jjferrer (1 intervención) el 24/01/2020 08:54:13
Aunque el uso de la función InStr es bastante fácil, no consigo averiguar porque la siguiente macro devuelve el valor de posición 0(pos=0). ¿Qué se me esta escapando?

1
2
3
4
5
Sub pruebacadena()
Dim pos As Integer
pos = InStr(1, "A", "Pago en AUTOPISTA MARE NOSTRUM VALENCIA ES", vbTextCompare)
MsgBox (pos)
End Sub
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de John Jairo
Val: 152
Ha mantenido su posición en Excel (en relación al último mes)
Gráfica de Excel

Funcion InStr no funciona¿?

Publicado por John Jairo (52 intervenciones) el 24/01/2020 13:42:05
¡Hola, jjferrer!

Varias cosas a tener en cuenta:

1. El segundo argumento de la función InStr es la cadena desde donde se busca, mientras que el tercer argumento es la cadena buscada (estos argumentos los tienes trocados).

En otras palabras, una sintaxis correcta que puedes usar es:

1
pos = InStr(1, "Pago en AUTOPISTA MARE NOSTRUM VALENCIA ES", "A", vbTextCompare)

o, también:

1
pos = InStr(1, "Pago en AUTOPISTA MARE NOSTRUM VALENCIA ES", "A", 1)

En este ejemplo, el valor devuelto es 2 (la primera "a" encontrada), puesto que, por el tipo de comparación, no se distingue entre mayúsculas y minúsculas.

2. Si quieres que encuentre estrictamente la letra "A" (mayúscula), entonces debes cambiar el tipo de comparación de vbTextCompare a vbBinaryCompare. Es decir:

1
pos = InStr(1, "Pago en AUTOPISTA MARE NOSTRUM VALENCIA ES", "A", vbBinaryCompare)

o, también:

1
pos = InStr(1, "Pago en AUTOPISTA MARE NOSTRUM VALENCIA ES", "A", 0)

Aquí, el valor devuelto es 9 (primera letra mayúscula A encontrada de izquierda a derecha)

Espero haberte ayudado, ¡Dios te bendiga!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar