Excel vba problema al ejecutar macro desde checkbox

Estoy intentando ejecutar una macro muy sencilla. Que al marcar un checkbox figure en la celda de al lado la hora actual. Como en las fotos. El caso es, que al hacer click no se ejecuta nada, la macro creo que la hice bien:

For x = 2 To Range("A" & Rows.Count).End(xlUp).Row

    If CheckBox1.Value = True Then  Range("C" & x) = Now()

    If CheckBox2.Value = True Then  Range("C" & x) = Now()

etc.

Next

¿En qué me puedo estar equivocando? La macro no hace nada, ni al hacer click sobre el checkbox ni al ejecutarla directamente...

Gracias de antemano.

2 respuestas

Respuesta
2

Estás utilizando Controles de Formulario. Para eso realiza alguna de las siguientes opciones.

OPCIÓN 1.

Renombrar los checkbox. Realiza lo siguiente:

1. Presiona clic derecho sobre el primer Checkbox

2. En el cuadro de nombres escribe "CheckBox1" y presiona enter

3. Repite los pasos 1 y 2 para todos los checkbox

4. Ejecuta la siguiente macro

Sub Macro1()
  Dim i As Long, u As Long
  u = Range("A" & Rows.Count).End(3).Row
  Range("C2:C" & u).Value = ""
  For i = 2 To u
    If ActiveSheet.DrawingObjects("CheckBox" & i - 1) = 1 Then
      Range("C" & i).Value = Now
    End If
  Next
End Sub

Le estoy poniendo i -1 porque tu primer checkbox es el 1 y el contador está empezando en 2, entonces tenemos:

"CheckBox" & 2 -1

"CheckBox" & 1

"CheckBox1"


OPCIÓN 2.

Ahora si quieres que funcionen en automático cada que presionas el checkbox. Realiza lo siguiente:

1. Renombra los checkbox como te mostré en la opción 1.

2. Presiona clic derecho sobre el primer checkbox ("CheckBox1").

3. Selecciona del menú Asignar macro.

4. En la ventana "Asignar macro", aparece como Nombre de la macro "CheckBox1_Haga_clic_en". Presiona el botón "Nuevo"

5. Pon el siguiente código para el CheckBox1:

Sub CheckBox1_Haga_clic_en()
  If ActiveSheet.DrawingObjects("CheckBox1") = 1 Then
    Range("C2").Value = Now
  Else
    Range("C2").Value = ""
  End If
End Sub

6. Repite los pasos para cada CheckBox, por ejemplo, para el CheckBox2 quedaría:

Sub CheckBox2_Haga_clic_en()
  If ActiveSheet.DrawingObjects("CheckBox2") = 1 Then
    Range("C3").Value = Now
  Else
    Range("C3").Value = ""
  End If
End Sub

Y así sucesivamente para cada checkbox.


OPCIÓN 3

Realiza los siguientes pasos:

1. Renombra todos los checkbox como te mostré en la opción 1.

2. Pon la siguiente macro en un módulo.

Sub Macro2()
  Dim i As Long
  i = Mid(Application.Caller, 9) + 1
  If ActiveSheet.DrawingObjects(Application.Caller) = 1 Then
    Range("C" & i).Value = Now
  Else
    Range("C" & i).Value = ""
  End If
End Sub

3. Presiona clic derecho en el primer checkbox.

4. Selecciona del menú Asignar macro.

5. En la ventana "Asignar macro" selecciona Macro2 y presiona Aceptar.

6. Repite los pasos para todos los checkbox.

Listo, cada que presiones un checkbox se pondrá en automático la fecha y la hora.

Respuesta
1

Bueno ya que solo pones eso no se el evento que estas poniendo para aplicar la macro.
Solo necesitas quitar los paréntesis a Now, te dejo un ejemplo:

Private Sub CheckBox1_Click()
If CheckBox1.Value = True Then Range("C2").Value = Now
End Sub

Se ejecuta cuando das clic en el checkbox1

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas