Lista desplegable + VBA, problemas con las mayúsculas
Resuelto
Anthelm
Mensajes publicados
202
Estado
Miembro
-
Yoyo01000 Mensajes publicados 1720 Fecha de registro Estado Miembro Última intervención -
Yoyo01000 Mensajes publicados 1720 Fecha de registro Estado Miembro Última intervención -
Hola,
Tengo una lista desplegable con "Sí" y "No" como opciones
Tengo el siguiente código:
If Worksheets("Opciones").Range("B2") = ("Sí") Then
opcion1 = "sí"
Cuando el usuario hace clic en "Sí" en la lista, no hay problema porque tiene mayúscula.
Pero si escribe "sí" en el teclado, la celda lo acepta, pero la macro (que considera que "sí" no es igual a "Sí") no.
He pensado en If Worksheets("Opciones").Range("B2") = ("Sí") OR (lo mismo) = ("sí") Then (etc., etc.)
funcionaría si el usuario ingresa "sí" con o sin mayúscula.
Pero es un poco tonto, porque siempre se puede cometer un error tipográfico y escribir "si" o "Si"... Estoy exagerando un poco, pero en sí no es óptimo. Especialmente porque el usuario no se dará cuenta de que el resultado en VBA no devolverá lo correcto.
¿Qué opinas, cuál es la pista a revisar?
1) ¿La lista desplegable es una mala elección (tal vez un botón de opción, por ejemplo)?
2) ¿La macro es demasiado simple y hay otra forma de evitar esta "sensibilidad a mayúsculas"?
Gracias por darme una pista si has tenido un caso como este...
¡Buen día a todos!
Tengo una lista desplegable con "Sí" y "No" como opciones
Tengo el siguiente código:
If Worksheets("Opciones").Range("B2") = ("Sí") Then
opcion1 = "sí"
Cuando el usuario hace clic en "Sí" en la lista, no hay problema porque tiene mayúscula.
Pero si escribe "sí" en el teclado, la celda lo acepta, pero la macro (que considera que "sí" no es igual a "Sí") no.
He pensado en If Worksheets("Opciones").Range("B2") = ("Sí") OR (lo mismo) = ("sí") Then (etc., etc.)
funcionaría si el usuario ingresa "sí" con o sin mayúscula.
Pero es un poco tonto, porque siempre se puede cometer un error tipográfico y escribir "si" o "Si"... Estoy exagerando un poco, pero en sí no es óptimo. Especialmente porque el usuario no se dará cuenta de que el resultado en VBA no devolverá lo correcto.
¿Qué opinas, cuál es la pista a revisar?
1) ¿La lista desplegable es una mala elección (tal vez un botón de opción, por ejemplo)?
2) ¿La macro es demasiado simple y hay otra forma de evitar esta "sensibilidad a mayúsculas"?
Gracias por darme una pista si has tenido un caso como este...
¡Buen día a todos!
3 respuestas
-
Hola, ¿por qué pasar por VBA para esto?
¡Bastaría con crear un menú desplegable sin VBA! -
Pestaña "Datos" y luego "Validación de datos", en "Opciones" seleccionar "Lista" y poner "Sí;No".
-
Ok, la solución es con UCASE a mi parecer.
Esto convierte el resultado a mayúsculas.
Si Worksheets("Options").Range("B2") = ("Sí")
la prueba es si = "Sí"
Entonces, si "sí", el resultado es falso debido a que falta la mayúscula.
Pero si hacemos:
If UCase(Worksheets("Options").Range("B2")) = ("SÍ")
En otras palabras, si el resultado en mayúsculas = SÍ
No importa lo que ingrese el usuario: "sÍ" se convierte en "SÍ" y es igual a "SÍ", el resultado es verdadero.