Evitar que VBA Distinga entre Mayúsculas y Minúsculas – Opción Comparar Texto
Mientras trabaja en VBA, a menudo necesita comparar cadenas. Por defecto, VBA distingue entre mayúsculas y minúsculas, por lo que si compara dos textos iguales y uno de ellos está en mayúsculas y el otro en minúsculas, VBA los considerará como textos diferentes. En este tutorial, verá cómo evitar que VBA distinga entre mayúsculas y minúsculas.
Cómo Hacer que VBA No Distinga entre Mayúsculas y Minúsculas
Para hacer que VBA no distinga entre mayúsculas y minúsculas, necesita poner Option Compare Text al principio del módulo. Primero, veremos el comportamiento estándar de VBA sin esta opción establecida. Este es el código:
Sub comparar_texto()
If Hoja1.Range("A1").Value = Hoja1.Range("B1").Value Then
MsgBox "Los dos texto son iguales"
Else
MsgBox "Los textos son diferentes"
End If
End Sub
En el ejemplo, queremos comparar las cadenas de A1 y B1. Si las cadenas son iguales, devolveremos el cuadro de mensaje con el mensaje «Los dos texto son iguales». Si no son iguales, devolveremos el mensaje «Los textos son diferentes».
Como puedes ver en la imagen, ambos textos son iguales, pero el primero está en mayúsculas, mientras que el segundo está en minúsculas. Por eso, VBA los considera diferentes y devuelve este mensaje.
Ahora añadiremos la Opción Comparar Texto al principio del módulo y veremos la diferencia. Aquí está el código. Ejecutamos el código en el mismo ejemplo:
Option Compare Text
Sub comparar_texto()
If Hoja1.Range("A1").Value = Hoja1.Range("B1").Value Then
MsgBox "Los dos texto son iguales"
Else
MsgBox "Los textos son diferentes"
End If
End Sub
Ahora, cuando se establece la opción Comparar texto, el VBA se vuelve insensible a mayúsculas y minúsculas y considera que estos dos textos son iguales.
Comparación de Texto
Si no declara la Option Compare Text, puede convertir los casos de las cadenas para hacer comparaciones insensibles a mayúsculas y minúsculas. Esto es posible mediante las funciones UCase, LCase o StrConv. Puede encontrar más información sobre esto aquí: VBA Upper, Lower, and Proper Case – Case Functions