Casillasde verificación y botones de comando excel
Tengo un pequeño problema: en una hoja de excel introducí 4 casillas de verificación y un botón. El usuario debe marcar unas o varias casillas de acuerdo a unos criterios, y lo que quiero es que cuando presione el botón, la macro pueda ver el valor de las casillas (true o false) para ejecutar, en función a ello, unas acciones. Hasta ahora lo que he logrado es que cuando el usuario tilda la casilla de verificación, inmediatamente se ejecuta la macro, pero no quiero eso, sino que sea le usuario quien de la orden a través del botón.
1 Respuesta
Respuesta de donattello
1
1
donattello, Experto en el manejo de Excel y elaboracion de macros (VB)
Eso ocurre por que tu ligaste la casilla (o cada una de ellas) a una macro, es decir, diste clic derecho sobre una casilla (o todas) y en el menú contextual (el que sale con clic derecho) las asociaste a una macro. Así las cosas, cada vez que el usuario de clic sobre una casilla de inmediato se ejecutará la macro. Para resolver el problema: 1) Debes dar clic derecho sobre cada casilla (o en todas ellas), seleccionar "Asignar Macro" y borrar en "Nombre de la macro" la macro que hayas asignado, dando clic luego en Aceptar. Con esto "liberas" las casillas de la macro. 2) Las casillas de verificación generan una respuesta (devuelven un valor, true o false, verdadero o falso) cada vez que el usuario las habilita (selecciona) o las deshabilita (de-selecciona). Debes asingar una celda para que recoja esa respuesta. Una para cada casilla. Las celdas con los valores que devuelven las casillas pueden estar en otra hoja (no la principal, si es de tu preferencia) y van a ser las encargadas de "decirle" a la macro cual casilla fue seleccionada (la que sea seleccionada aparecerá con VERDADERO). 3) En la macro asociada al botón que creaste para el usuario, debes definir que sucede cuando una de las celdas que contiene la respuesta (VERDADERO o FALSO) de la respectiva casilla toma uno de esos dos valores. Hagamo un ejemplo: supongamos que una de las casillas está en la Hoja1 y que el valor que ella devuelve va a parar a la celda B1 de la Hoja2, entonces el código dirá, por ejemplo que: 'Almacenamos el valor de la celda B1 de la Hoja2 en la variable casilla1 casilla1 = Worksheets(2).Range("B1") 'Luego, introducimos una orden condicional If..Then para que si casilla1 es True (Verdadero) se ejecuten las ordenes que tu decidiste realizar If casilla1 Then
..... 'instrucciones a ejecutar'
End If Ten encuenta que el ejemplo escrito es para una sola casilla. Si trabajas con más de una casilla deberás repetir las líneas de código una vez por cada casilla. Así: casilla1 = Worksheets(2).Range("B1") If casilla1 Then ..... End If casilla2 = Worksheets(2).Range("B2") If casilla2 Then ..... End If casilla3 = Worksheets(2).Range("B3") If casilla2 Then ..... End If casilla4 = Worksheets(2).Range("B4") If casilla2 Then ..... End If 4) Asigna la macro al botón que creaste para el usuario (con clic derecho), Asignar Macro. Existen otras alternativas, pero ensaya esta a ver como te va. Sdos. No olvides cerrar y calificar la respuesta. Donattello
Que increíble, estuve una semana trabajando en un código y lo que me faltaba era eso y mira lo sencillo que era. Lo que me faltaba era asignar el valor del checkbox a una celda y yo lo que intentaba es que este valor lo leyera directamente el botón de comando. Realmente mil gracias, tengo una pregunta más con respecto a fechas pero la formularé aparte. Tu ayuda me ha servido al 100% Donattello.