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.
Hacer que VBA no distinga entre mayúsculas y minúsculas
Para que VBA no distinga entre mayúsculas y minúsculas, debe poner Opción Comparar texto al comienzo del módulo. Primero, veremos el comportamiento estándar de VBA sin esta opción establecida. Este es el código:
123456789 | Si Sheet1.Range ("A1"). Value = Sheet1.Range ("B1"). Value EntoncesMsgBox "Dos textos son iguales"DemásMsgBox "Dos textos son diferentes"Terminara si |
En el ejemplo, queremos comparar las cadenas de A1 y B1. Si las cadenas son iguales, devolveremos el cuadro de mensaje con el mensaje “Dos textos son iguales”. Si no son iguales, devolveremos el mensaje “Dos textos son diferentes.
Imagen 1. Comparación de cadenas sin la opción Comparar texto
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 devolvió este mensaje.
1234567891011 | Opción Comparar textoPublic Sub CaseSensitiveTest ()Si Sheet1.Range ("A1"). Value = Sheet1.Range ("B1"). Value EntoncesMsgBox "Dos textos son iguales"DemásMsgBox "Dos textos son diferentes"Terminara siEnd Sub |
Ahora agregaremos Option Compare Text al comienzo del módulo y veremos la diferencia. Aquí está el código. Ejecutamos el código en el mismo ejemplo:
Imagen 2. Comparación de las cadenas con la opción Comparar texto
Ahora, cuando se establece Option Compare Text, el VBA no distingue entre mayúsculas y minúsculas y considera que estos dos textos son iguales.
Comparación de texto
Si no declara Opción Comparar texto, puede convertir cadenas de caracteres para realizar comparaciones que no distingan entre mayúsculas y minúsculas. Esto es posible mediante la función UCase, LCase o StrConv. Puede encontrar más información sobre esto aquí: VBA Upper, Lower y Proper Case - Case Functions