检查是否选中了基于工作表的checkbox
我正在尝试使用IF子句来确定我的checkbox(名为“checkbox1”)是否被选中,以便在我的程序中进一步使用。
我目前的代码:
Sub Button167_Click() If ActiveSheet.Shapes("Check Box 1") = True Then Range("Y12").Value = 1 Else Range("Y12").Value = 0 End If End Sub
这似乎不工作,但debugging告诉我有一个问题
ActiveSheet.Shapes("Check Box 1")
不过,我知道这个代码有效(即使它有不同的用途):
ActiveSheet.Shapes("Check Box 1").Select With Selection .Value = xlOn
编辑:如果需要更多的信息,我的checkbox(在我的网页上有200个)位于sheet1,名称为“Demande”。 并且每个checkbox都具有相同的格式名称“checkbox…”。
所有的帮助将不胜感激。 谢谢
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被选中,-4146未被选中,2被混合(灰色框)
这是你正在尝试?
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
将Activesheet
replace为相关的工作表名称。 同时用相关的checkbox名称replaceCheck Box 1
。
基于以前的 答案 ,您可以利用True
为-1和False
为0这一事实,并缩短代码,如下所示:
Sub Button167_Click() Range("Y12").Value = _ Abs(Worksheets(1).Shapes("Check Box 1").OLEFormat.Object.Value > 0) End Sub
如果checkbox被选中, .Value
= 1。
Worksheets(1).Shapes("Check Box 1").OLEFormat.Object.Value > 0
返回True
。
应用Abs
函数将True
转换为1
。
如果checkbox未选中, .Value
= -4146。
Worksheets(1).Shapes("Check Box 1").OLEFormat.Object.Value > 0
返回False
。
应用Abs
函数将False
转换为0
。
试试: Controls("Check Box 1") = True