Buscar texto en una cadena (función INSTR) - Ejemplos de código VBA

Función INSTR

La función VBA Instr comprueba si se encuentra una cadena de texto en otra cadena de texto. Devuelve 0 si no se encuentra el texto. De lo contrario, devuelve la posición del carácter donde se encuentra el texto.

La función Instr realiza exacto partidos. El operador similar a VBA se puede utilizar en su lugar para realizar coincidencias inexactas / coincidencia de patrones mediante el uso de comodines.

Ejemplo de Instr

El siguiente fragmento de código busca en la cadena "Buscar en esta cadena" la palabra "Buscar". La función Instr devuelve 1 porque el texto se encuentra en la primera posición.

123 Sub FindSomeText ()MsgBox InStr ("Buscar en esta cadena", "Buscar")End Sub

Este segundo ejemplo devuelve 7 porque el texto se encuentra comenzando en la séptima posición:

123 Sub FindSomeText2 ()MsgBox InStr ("No buscar en esta cadena", "Mirar")End Sub

¡Importante! La función Instr es distingue mayúsculas y minúsculas por defecto. Esto significa que "mirar" no coincidirá con "mirar". Para que la prueba no distinga entre mayúsculas y minúsculas, lea a continuación.

Sintaxis de Instr

La sintaxis de la función Instr es la siguiente:

1 Instr ([inicio], cadena, subcadena, [comparar])

[inicio] (opcional) - Este argumento opcional es la posición inicial de la búsqueda. Ingrese 1 para comenzar a buscar desde la posición 1 (o déjelo en blanco). Ingrese 5 para comenzar a buscar desde la posición 5. ¡Importante! La función INSTR calcula la posición del carácter contando desde 1 NO desde la posición [inicio].

cuerda : La cadena de texto para buscar.

subcadena : La cadena de texto que se buscará en la cadena principal.

[comparar] (opcional) - De forma predeterminada, Instr distingue entre mayúsculas y minúsculas. Al establecer este argumento, puede hacer que Instr no distinga entre mayúsculas y minúsculas:

Valor de argumento vb

Entero de argumento Descripción
vbBinaryCompare

0

(Predeterminado) Sensible a mayúsculas y minúsculas

vbTextCompare

1

No entre mayúsculas y minúsculas

vbDatabaseCompare

2

Sólo MS Access. Utiliza información de la base de datos para realizar comparaciones.

Posición de inicio de Instr

La posición de inicio de Instr le permite indicar la posición del personaje donde comenzará su búsqueda. Sin embargo, tenga en cuenta que la salida de Instr siempre contará desde 1.

Aquí establecemos la posición de inicio en 3 para omitir la primera B:

123 Sub Instr_StartPosition ()MsgBox InStr (3, "ABC ABC", "B")End Sub

El resultado es 6 porque la segunda B es el sexto carácter de la cadena.

Prueba INSTR que no distingue entre mayúsculas y minúsculas

De forma predeterminada, VBA trata a "L" de manera diferente a "l". En otras palabras, VBA distingue entre mayúsculas y minúsculas. Esto es cierto para todas las funciones de texto. Para que VBA no distinga entre mayúsculas y minúsculas, establezca el argumento [comparar] en 1 o vbTextCompare.

123 Sub público FindText_IgnoreCase ()MsgBox InStr (1, "No buscar en esta cadena", "mirar", vbTextCompare)End Sub

Alternativamente, puede agregar Option Compare Text en la parte superior de su módulo de código:

1 Opción Comparar texto
12345 Opción Comparar textoSub público FindText_IgnoreCase2 ()MsgBox InStr ("No buscar en esta cadena", "mirar")End Sub

La opción Comparar texto afectará a todo el código de ese módulo. Personalmente, coloco esto en la parte superior de cualquier módulo que se ocupe de texto porque nunca me preocupan las diferencias entre mayúsculas y minúsculas.

Función InstrRev

La función Instr busca desde la izquierda. En su lugar, puede buscar desde la derecha utilizando la función InstrRev. La función InstrRev funciona de manera muy similar a la función Instr.

123 Sub FindSomeText_FromRight ()MsgBox InStrRev ("Buscar en esta cadena", "Buscar")End Sub

Al igual que la función Instr, esto devolverá 1 porque solo hay una instancia de "Look" en el texto. Pero si agregamos un segundo "Look", verá que devuelve la posición del "Look" más a la derecha:

123 Sub FindSomeText_FromRight ()MsgBox InStrRev ("Mira en esta cadena Mira", "Mira")End Sub

A continuación, revisaremos más ejemplos de Instr.

Ejemplos de InString

Si la cadena contiene una subcadena

Aquí usaremos una instrucción If para probar si una cadena contiene una subcadena de texto:

123456789 Sub público FindSomeText ()Si InStr ("Buscar en esta cadena", "mirar") = 0 EntoncesMsgBox "No coincide"DemásMsgBox "Al menos una coincidencia"Terminara siEnd Sub

Encontrar una cadena de texto en una celda

También puede encontrar una cadena en una celda:

12345 Sub Find_String_Cell ()Si InStr (Range ("B2"). Value, "Dr.")> 0 EntoncesRango ("C2"). Valor = "Doctor"Terminara siEnd Sub

O recorre un rango de celdas para probar si las celdas contienen algo de texto:

12345678910 Sub Search_Range_For_Text ()Atenuar celda como rangoPara cada celda del rango ("b2: b6")Si InStr (cell.Value, "Dr.")> 0 Entoncescell.Offset (0, 1) .Value = "Doctor"Terminara siSiguiente celdaEnd Sub

Encontrar la posición de un personaje en una cadena

Este código encontrará la posición de un solo carácter en una cadena y asignará la posición a una variable:

1234 Sub Find_Char ()Dim n tan largon = InStr ("Aquí, mirar aquí", "L")End Sub

Cadena de búsqueda para Word

Este código buscará una palabra en una cadena:

12345678910 Sub Search_String_For_Word ()Dim n tan largon = InStr ("Aquí mirar aquí", "Mirar")Si n = 0 entoncesMsgBox "Palabra no encontrada"DemásMsgBox "Palabra encontrada en posición:" & nTerminara siEnd Sub

Si la variable contiene una cadena

Este código probará si una variable de cadena contiene una cadena de texto:

12345678 Sub Variable_Contains_String ()Dim str como cadenastr = "Mira aquí"Si InStr (str, "Here")> 0 EntoncesMsgBox "¡Aquí encontrado!"Terminara siEnd Sub

Instr y la función de la izquierda

Instr se puede utilizar junto con otras funciones de texto como Izquierda, Derecha, Len y Medio para recortar texto.

Con la función Izquierda, puede generar el texto antes de una cadena de texto:

1234567891011 Sub Instr_Left ()Dim str como cadenaDim n tan largostr = "Mira aquí"n = InStr (str, "Aquí")MsgBox Izquierda (str, n - 1)End Sub

Usando Instr en Microsoft Access VBA

Todos los ejemplos anteriores funcionan exactamente igual en Access VBA que en Excel VBA.

Para obtener más información, lea nuestro artículo: Funciones de texto de VBA

Va a ayudar al desarrollo del sitio, compartir la página con sus amigos

wave wave wave wave wave