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)