VBA StrComp

Función Excel VBA StrComp

VBA StrComp es una función incorporada que se utiliza para comparar si los dos valores de cadena son iguales o no. Sin embargo, los resultados no son VERDADEROS o FALSOS predeterminados como en la hoja de trabajo, sino que son diferentes.

Antes de ver los resultados, permítame mostrarle la sintaxis de la función StrComp primero.

  • Cadena 1: La cadena 1 es la primera cadena o valor que comparamos.
  • Cadena 2: La cadena 2 es la segunda cadena o valor que comparamos con la Cadena 1 .
  • Compare: podemos ofrecer tres opciones aquí.
      • 0 = Comparación binaria. Esto realiza cálculos sensibles a mayúsculas y minúsculas. Por ejemplo, "Hola" no es igual a "HOLA" porque ambos casos de palabras son diferentes. Este es el valor predeterminado si ignora este parámetro. vbBinaryCompare
      • 1 = Comparación de texto. Esta opción realiza los cálculos que no distinguen entre mayúsculas y minúsculas. Por ejemplo, "Hola" es igual al evento "HOLA", aunque ambas palabras casos son diferentes. vbTextCompare
      • 2 = Comparación de acceso. Esto realiza la comparación de la base de datos.

Resultados de la función de comparación de cadenas (StrComp)

Como dije cuando comparamos dos valores en la hoja de trabajo, obtenemos el resultado como VERDADERO o FALSO. Pero con la función de comparación de cadenas de VBA, los resultados no son los mismos.

  • Obtenemos cero (0) cuando Cadena 1 es igual a Cadena 2.
  • Obtenemos uno (1) cuando el valor de Cadena 1 es mayor que el Valor de Cadena 2 .
  • Obtenemos menos uno (-1) cuando el valor de Cadena 1 es menor que Cadena 2
  • Obtenemos NULL cuando el valor de String 1 o String 2 es NULL.

Ejemplos para usar la función VBA StrComp

Puede descargar esta plantilla de Excel de VBA StrComp aquí - Plantilla de Excel de VBA StrComp

Ejemplo 1

Comencemos con un ejemplo sencillo. Por ejemplo, compararemos dos valores, es decir, "Excel VBA" y "Excel VBA".

Código:

 Sub StrComp_Example1 () Dim FirstValue As String 'Para almacenar el valor de String 1 Dim SecondValue As String' Para almacenar el valor de String 2 Dim Result As String 'Para almacenar el resultado de la fórmula StrComp FirstValue = "Excel VBA"' Asignar el valor de String 1 SecondValue = "Excel VBA" 'Asignar el valor de cadena 2 Resultado = StrComp (FirstValue, SecondValue, vbBinaryCompare)' Aplicar función StrComp MsgBox Result 'Mostrar el resultado en el cuadro de mensaje End Sub 

Cuando ejecuto este código, obtendremos Zero (0) como resultado porque los valores de String 1 y String 2 son iguales.

Ejemplo # 2

Ahora cambiaré los casos de dos palabras.

Cadena 1 = Excel Vba

Cadena 2 = Excel VBA

Código:

 Sub StrComp_Example2 () Dim FirstValue As String 'Para almacenar el valor de String 1 Dim SecondValue As String' Para almacenar el valor de String 2 Dim Result As String 'Para almacenar el resultado de la fórmula StrComp FirstValue = "Excel Vba"' Asignar el valor de String 1 SecondValue = "Excel VBA" 'Asignar el valor de cadena 2 Resultado = StrComp (FirstValue, SecondValue, vbBinaryCompare)' Aplicar función StrComp MsgBox Result 'Mostrar el resultado en el cuadro de mensaje End Sub 

Cuando ejecuto este código, obtendremos 1 porque, dado que proporcionamos el argumento Comparar como “ vbBinaryCompare” , buscará caracteres que distingan entre mayúsculas y minúsculas.

Ahora cambiaré la opción Comparar de " vbBinaryCompare" a " vbTextCompare"

Código:

 Sub StrComp_Example3 () Dim FirstValue As String 'Para almacenar el valor de String 1 Dim SecondValue As String' Para almacenar el valor de String 2 Dim Result As String 'Para almacenar el resultado de la fórmula StrComp FirstValue = "Excel Vba"' Asignar el valor de String 1 SecondValue = "Excel VBA" 'Asignar el valor de cadena 2 Resultado = StrComp (FirstValue, SecondValue, vbTextCompare)' Aplicar función StrComp MsgBox Result 'Mostrar el resultado en el cuadro de mensaje End Sub 

Con esta comparación, obtendremos cero (0) porque vbaTextCompare ignora las palabras que distinguen entre mayúsculas y minúsculas.

Ejemplo # 3

Estudio de caso de VBA StrComp con condición IF

Suponga que tiene los datos como en la imagen de abajo.

Necesitamos comparar la Cadena 1 con la Cadena 2 y obtener el Resultado como "Exacto" si ambos son iguales; de lo contrario, el resultado debería ser "No Exacto".

El siguiente código hará el trabajo por nosotros.

Código:

 Sub StrComp_Example4 () Dim Resultado como cadena Dim I como entero para i = 2 a 6 Resultado = StrComp (Celdas (i, 1) .Valor, Celdas (i, 2) .Valor) Si Resultado = 0 Entonces Celdas (i, 3 ) .Value = "Exacto" Else Cells (i, 3) .Value = "No exacto" End If Next i End Sub 

Cuando ejecuto el código VBA anterior en Excel, obtendremos el siguiente resultado.

Si observa la celda C4, la Cadena 1 y la Cadena 2 son iguales pero los caracteres distinguen entre mayúsculas y minúsculas, por lo que el resultado es "No exacto". Para superar este problema, necesitamos proporcionar la comparación como vbTextCompare.

A continuación se muestra el código modificado para obtener el resultado como "Exacto" para la celda C4.

Código:

 Sub StrComp_Example4 () Dim Resultado como cadena Dim I como entero para i = 2 a 6 Resultado = StrComp (Celdas (i, 1) .Valor, Celdas (i, 2) .Valor, vbTextCompare) Si Resultado = 0 Entonces Celdas (i , 3) .Value = "Exacto" Else Cells (i, 3) .Value = "No exacto" End If Next i End Sub 

Este código devolverá el siguiente resultado.