Comparar cadenas en VBA
Presentaremos cómo comparar cadenas con diferentes métodos en VBA.
Comparar cadenas en VBA
Al trabajar con hojas de Excel, hay algunas situaciones en las que tenemos que comparar cadenas y queremos obtener resultados sobre qué cadena es mayor o menor que la otra. VBA proporciona un método perfecto para este propósito conocido como StrComp()
, que compara dos cadenas para obtener los resultados en valores numéricos.
Si las dos cadenas que estamos comparando son iguales, este método devolverá 0
. Si la primera cadena es menor que la otra cadena, obtendremos el -1
como valor de retorno.
Si la primera cadena de entrada es más grande que la otra cadena, obtendremos como resultado el valor 1
. Si una de las cadenas de entrada del usuario está vacía, el valor devuelto será Null
.
El método StrComp()
utiliza tres métodos de comparación, pero solo dos son los más utilizados, y discutiremos estos dos métodos. Si queremos comparar el binario de dos cadenas, podemos usar vbBinaryCompare
, y este método distingue entre mayúsculas y minúsculas.
Si queremos comparar el texto de ambas cadenas, podemos usar vbTextCompare
, un método que no distingue entre mayúsculas y minúsculas. Pongamos un ejemplo y comparemos dos cadenas.
Código:
# VBA
Sub test()
Dim compare As Integer
stringOne = "Hello World"
stringTwo = "Hello World"
compare = StrComp(stringOne, stringTwo)
MsgBox compare
End Sub
Producción:
Del ejemplo anterior, pasamos las mismas cadenas que obtuvimos 0
como valor de retorno. Pasemos diferentes valores y verifiquemos qué valor de retorno obtenemos.
Código:
# VBA
Sub test()
Dim compare As Integer
stringOne = "Hello World"
stringTwo = "Hello World!"
compare = StrComp(stringOne, stringTwo)
MsgBox compare
End Sub
Producción:
Del código anterior, pasamos las diferentes cadenas con longitud, obtuvimos -1
como valor de retorno porque la segunda cadena era mayor que la primera. Probemos los métodos de comparación de cadenas en StrComp()
y verifiquemos cómo difieren los resultados si usamos las mismas cadenas pero diferentes en mayúsculas y usamos el método vbTextCompare
.
Código:
# VBA
Sub test()
Dim compare As Integer
stringOne = "Hello World"
stringTwo = "Hello WorLd"
compare = StrComp(stringOne, stringTwo, vbTextCompare)
MsgBox compare
End Sub
Producción:
Ahora, usamos el método vbBinaryCompare
en nuestro ejemplo agregando un solo espacio adicional.
Código:
# VBA
Sub test()
Dim compare As Integer
stringOne = "Hello World"
stringTwo = "Hello World"
compare = StrComp(stringOne, stringTwo, vbBinaryCompare)
MsgBox compare
End Sub
Producción:
De esta forma, podemos comparar dos cadenas en función de su longitud o del texto utilizando el método StrComp()
con métodos integrados como vbTextCompare
y vbBinaryCompare
.