VBA – Comparar cadenas – StrComp
En VBA, puede comparar dos cadenas utilizando la función StrComp. En este tutorial, aprenderá a utilizar esta función con diferentes métodos de comparación.
Si desea aprender a utilizar el operador like de VBA para comparar coincidencias inexactas, haga clic aquí: Operador LIKE de VBA.
Si desea aprender a utilizar los operadores de comparación, haga clic aquí: Operadores de comparación VBA – Not Equal a y más
Usando la Función StrComp para Comparar Dos Cadenas
La función StrComp toma dos cadenas y el método de comparación como argumentos. Hay 3 métodos de comparación:
- vbBinaryCompare – compara dos cadenas en binario (distingue entre mayúsculas y minúsculas);
- vbTextCompare – compara dos cadenas como textos (no distingue mayúsculas de minúsculas);
- vbDatabaseCompare – este método sólo está disponible en Microsoft Access y no en VBA.
Por defecto, la función utiliza el método binario. Si omitimos este argumento, la función distinguirá entre mayúsculas y minúsculas.
La función devuelve los siguientes resultados:
- 0 – si las cadenas son iguales;
- -1 – si la cadena 1 es menor que la cadena 2
- 1 – si la cadena 1 es mayor que la cadena 2;
- Null – si una de las cadenas está vacía.
Este es el código de ejemplo:
Dim intResult As Integer
intResult = StrComp("Computadora", "Computadora")
En este ejemplo, queremos comprobar si las cadenas «Computadora« y «Computadora« son iguales, utilizando el método de comparación por defecto (binario). El resultado de la función está en la variable intResultado. Como puede ver en la imagen, ambas cadenas son iguales, por lo tanto el intResultado tiene valor 0.
Imagen 1. Uso de la función StrComp con el método binario en VBA
Uso de la función StrComp con el método binario y textual
Ahora verá la diferencia entre usar el método binario y el textual. El método binario tiene un número binario para cada carácter, por lo que las mayúsculas y las minúsculas son caracteres diferentes en este método. Por otro lado, el método textual considera «S» y «s» como las mismas letras. Si desea que la función no distinga entre mayúsculas y minúsculas, debe establecer el tercer argumento como vbBinaryCompare. Este es el código:
Sub CompararCadenas()
Dim intResult1 As Integer
Dim intResult2 As Integer
intResult1 = StrComp("Computadora", "CompuTadora")
intResult2 = StrComp("Computadora", "CompuTadora", vbTextCompare)
End Sub
Queremos comparar las cadenas «Computadora« y «CompuTadora» , utilizando ambos métodos. En la variable intResult1, obtendremos el valor con el método binario, mientras que el intResultado2 obtendrá el valor con el método textual. Puedes ver los valores de estas dos variables:
Imagen 2. Uso de la función StrComp con el método binario y textual
El valor de intResult1 es 1, lo que significa que las dos cadenas son diferentes para el método binario. Para el método textual, estas dos cadenas son iguales, por lo que el valor de intResult2 es 0.