VBA InStr - Los 5 mejores ejemplos para usar la función InStr de Excel VBA

Tabla de contenido

Función Excel VBA InStr

Instr en VBA se usa para averiguar la posición de una subcadena dada en una cadena después de que especificamos el método de comparación para la función, hay cuatro métodos de comparación diferentes para esta función, Instr es una función de cadena pero la salida devuelta por la función es numérico por lo que la salida de esta función está en una variable entera.

String en VBA no es más que una serie de caracteres, es decir, todos los textos que se suministran con comillas dobles se tratan como cadenas. La función InStr es una función de texto incorporada que se utiliza para manipular cadenas. Por ejemplo: si desea extraer una subcadena de una oración o si desea aplicar cambios de diseño de fuente a una cadena en particular en una serie de caracteres, o si desea encontrar la posición de un carácter y muchas otras posibilidades, puede use InStr.

Sintaxis

Tiene 4 argumentos, como se muestra en la siguiente imagen.

  • (Inicio): esto no es obligatorio. Este es el valor numérico que necesitamos especificar desde qué posición de la cadena de función Instr comienza a buscar el texto proporcionado. Por ejemplo: si desea buscar el carácter "a" en la palabra "Bangalore" desde la posición, debemos indicarle a la posición inicial de la función Instr como 3. Entonces, desde la posición, el carácter "a" es en la posición. Si ignora este parámetro, el valor predeterminado es 1.
  • Cadena 1: Esta es la cadena real que estamos suministrando, es decir, a partir de este texto, estamos tratando de encontrar la subcadena. Por ejemplo, si está buscando la cadena "a" en "Bangalore", la cadena 1 en Bangalore.
  • Cadena 2: Esto no es más que la cadena que estamos buscando. Por ejemplo, si está buscando la cadena "a" en "Bangalore", la cadena 2 es a .
  • (Compare): Este es nuevamente un argumento opcional. Hay tres tipos de opciones disponibles en el argumento (comparar).
  • vbBinaryCompare: Esto no es más que una búsqueda sensible a mayúsculas y minúsculas de la subcadena (cadena 2) en la Cadena 1. Por ejemplo, si estamos buscando "a" en la palabra "Bangalore", Instr devolvería 2 como resultado, y si están buscando "A" en la palabra "Bangalore", Instr devolvería 0 como resultado porque la cadena proporcionada es un valor en mayúsculas.

También podemos poner cero (0) como argumento.

vbTextCompare: Esta no es una búsqueda sensible a mayúsculas y minúsculas de la cadena 2 en la cadena 1. Por ejemplo, si estamos buscando "a" en la palabra "Bangalore", Instr devolvería 2 como resultado, y si está buscando " A ” en la palabra “ Bangalore ”, Instr también devolvería 2. La lógica es A = a, B = b, C = c, etc.….

También podemos poner uno (1) como argumento.

vbDatabaseCompare: se utiliza para comparar la información de su base de datos, es decir, la base de datos de Microsoft Access.

También podemos poner uno (-1) como argumento.

Los 5 mejores ejemplos de uso de la función VBA Instr

Ejemplo 1

Comencemos con el primer ejemplo. En la palabra Bangalore, busque la posición del carácter a.

El siguiente código realizará la tarea por nosotros.

Código:

Sub Instr_Example1 () Dim i As Variant i = InStr ("Bangalore", "a") MsgBox i End Sub

Ahora ejecute el código VBA proporcionado anteriormente con la tecla F5, o también puede ejecutar este código manualmente, como se muestra en la captura de pantalla que se muestra a continuación.

Salida:

Ejemplo # 2

Ahora, en la palabra Bangalore, busque la posición del carácter "a" desde la tercera posición.

El siguiente código realizará la tarea por nosotros.

Código:

Sub Instr_Example2 () Dim i As Variant i = InStr (3, "Bangalore", "a") MsgBox i End Sub

Para ejecutar el código anterior, puede usar la tecla F5, o también puede ejecutar este código manualmente, como se muestra en la captura de pantalla que se muestra a continuación.

Salida:

Ahora, en la imagen de arriba, observe la diferencia con el código anterior. Dado que hemos mencionado la posición inicial del carácter como 3, se ignoró el primer carácter "a" en la posición.

Ejemplo # 3

Ahora veremos una búsqueda sensible a mayúsculas y minúsculas. En la palabra Bangalore, busque la letra "A".

Para esto, necesitamos proporcionar el argumento de comparación como vbBinaryCompare.

Código:

Sub Instr_Example3 () Dim i As Variant i = InStr (1, "Bangalore", "A", vbBinaryCompare) MsgBox i End Sub

Ahora ejecute este código usando la tecla F5, o también puede ejecutar este código manualmente.

Salida:

Since we have supplied the compare argument as vbBinaryCompare Instr function returned the result as zero because there are no uppercase letter “A” exists.

Example #4

Now we will see one more case sensitive search. In the word Bangalore, find the letter “A.” The previous example returned the result as zero.

In order to overcome the case sensitive approach here, we need to supply the compare argument as vbTextCompare.

Code:

Sub Instr_Example4() Dim i As Variant i = InStr(1, "Bangalore", "A", vbTextCompare) MsgBox i End Sub

Now Run, this code using the F5 Key, or you can also run this code manually.

Output:

Example #5

Now we will see the advanced level of Instr function. If you have many sheets that have a more or less similar name and you want to hide all those sheets at once, we can use the below code to hide a specific sheet.

For example, I have 5 sheets named Summary 1, Summary 2, Summary 3, Summary 4, and Data Sheet.

Now I want to hide all those sheets which have the word “Summary.” Use the below code to hide all the sheets which have the word Summary in its name.

Code:

Sub To_Hide_Specific_Sheet() Dim Ws As Worksheet For Each Ws In ActiveWorkbook.Worksheets If InStr(Ws.Name, "Summary")> 0 Then Ws.Visible = xlSheetVeryHidden End If Next Ws 'InStr function looks for word or phrase in the sheet name 'If it finds then it will be hidden End Sub

Now Run, this code using the F5 Key, or you can also run this code manually and see the Output.

Similarly, in order to unhide all those sheets, use the below code.

Code:

Sub To_UnHide_Specific_Sheet() Dim Ws As Worksheet For Each Ws In ActiveWorkbook.Worksheets If InStr(Ws.Name, "Summary")> 0 Then Ws.Visible = xlSheetVisible End If Next Ws 'InStr function looks for word or phrase in the sheet name 'If it finds then it will be hidden End Sub

Now Run, this code using the F5 Key, or you can also run this code manually and see the Output.

Things to Remember

  • Instr is a case sensitive function. In order to eliminate this case sensitive issue, you need to supply the (compare) argument as.
  • If you are searching for case sensitive character, you need to supply the (compare) argument as, by default, VBA takes this as the argument even if you do not supply.
  • Instr es una función de VBA, por lo que no puede usarla en una hoja de cálculo de Excel como otras fórmulas integradas.
  • Si la función no puede encontrar la Cadena 2, el resultado será cero.

Articulos interesantes...