verificacion programar poner insertar hacer como checklist check casilla excel vba excel-vba checkbox excel-vba-mac

poner - como programar un checkbox en excel



Comprobando si una casilla de verificación basada en hoja de trabajo está marcada (4)

¿Es esto lo que estás intentando?

Sub Sample() Dim cb As Shape Set cb = ActiveSheet.Shapes("Check Box 1") If cb.OLEFormat.Object.Value = 1 Then MsgBox "Checkbox is Checked" Else MsgBox "Checkbox is not Checked" End If End Sub

Reemplace la hoja activa con el nombre de hoja correspondiente. También reemplace la casilla de verificación Check Box 1 con el nombre de la casilla correspondiente.

Estoy tratando de usar una cláusula IF para determinar si mi casilla de verificación, llamada "Casilla de verificación 1", está marcada o no, para mi uso posterior en mi programa.

Mi código actual:

Sub Button167_Click() If ActiveSheet.Shapes("Check Box 1") = True Then Range("Y12").Value = 1 Else Range("Y12").Value = 0 End If End Sub

Esto no parece funcionar, pero la depuración me está diciendo que hay un problema con el

ActiveSheet.Shapes("Check Box 1")

Sin embargo, sé que este código funciona (aunque tiene un propósito diferente):

ActiveSheet.Shapes("Check Box 1").Select With Selection .Value = xlOn

EDITAR: Si se necesita más información, mis casillas de verificación (hay 200 en mi página), están ubicadas en la hoja 1, con el nombre de "Demande". Y cada casilla de verificación tiene el mismo nombre formateado de "casilla de verificación ...".

Toda ayuda será apreciada. Gracias


Probar: Controls("Check Box 1") = True


Sobre la base de previous answers previous , puede aprovechar el hecho de que True es -1 y False es 0 y acortar su código de la siguiente manera:

Sub Button167_Click() Range("Y12").Value = _ Abs(Worksheets(1).Shapes("Check Box 1").OLEFormat.Object.Value > 0) End Sub

Si la casilla está marcada, .Value = 1.

Worksheets(1).Shapes("Check Box 1").OLEFormat.Object.Value > 0 devuelve True .

Aplicar la función Abs convierte True en 1 .

Si la casilla de verificación no está marcada, .Value = -4146.

Worksheets(1).Shapes("Check Box 1").OLEFormat.Object.Value > 0 devuelve False .

Aplicando la función Abs convierte False a 0 .


Sub Button167_Click() If ThisWorkbook.Worksheets(1).Shapes("Check Box 1").OLEFormat.Object.Value = 1 Then Range("Y12").Value = 1 Else Range("Y12").Value = 0 End If End Sub

1 está marcado, -4146 está sin marcar, 2 está mezclado (recuadro gris)