Excel 检查是否选中了基于工作表的复选框

Excel 检查是否选中了基于工作表的复选框,excel,vba,macos,checkbox,Excel,Vba,Macos,Checkbox,我试图使用IF子句来确定是否选中了名为“checkbox 1”的复选框 我当前的代码: Sub Button167_Click() If ActiveSheet.Shapes("Check Box 1") = True Then Range("Y12").Value = 1 Else Range("Y12").Value = 0 End If End Sub 这不管用。调试器告诉我,程序有问题 ActiveSheet.Shapes("Check Box 1") 但是,我知道这段代码

我试图使用IF子句来确定是否选中了名为“checkbox 1”的复选框

我当前的代码:

Sub Button167_Click()
 If ActiveSheet.Shapes("Check Box 1") = True Then
 Range("Y12").Value = 1
 Else
 Range("Y12").Value = 0
 End If
End Sub
这不管用。调试器告诉我,程序有问题

ActiveSheet.Shapes("Check Box 1")
但是,我知道这段代码是有效的(尽管它有不同的用途):


我的复选框(我的页面上有200个)位于表1中,名称为“Demande”。每个复选框都有相同的格式名称“复选框…”。

尝试:
控件(“复选框1”)=True
这就是您正在尝试的吗

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
。同时将复选框1替换为相应的复选框名称

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为混合状态(灰框)

基于,您可以利用
True
为-1和
False
为0的事实,并按如下方式缩短代码:

Sub Button167_Click()
  Range("Y12").Value = _
    Abs(Worksheets(1).Shapes("Check Box 1").OLEFormat.Object.Value > 0)
End Sub
如果选中该复选框,
.Value
=1

工作表(1).Shapes(“复选框1”).OLEFormat.Object.Value>0
返回
True

应用
Abs
功能将
True
转换为
1

如果复选框未选中,
.Value
=-4146

工作表(1).Shapes(“复选框1”).OLEFormat.Object.Value>0
返回
False


应用
Abs
函数可将
False
转换为
0

似乎在ActiveX复选框控件的VBA宏代码中使用

If(ActiveSheet.OLEObjects(“CheckBox1”).Object.Value=True)

对于您使用的窗体复选框控件


如果(ActiveSheet.Shapes(“CheckBox1”).OLEFormat.Object.Value=1)

ActiveSheet.Shapes(“checkbox 1”).Value=True
?表单控制复选框或活动x控制复选框?@可以快速知道,而无需启动Parallels?您好,你能帮我以同样的方式获取javascript中复选框的值吗?你可以使用
CodeName
找到另一个解决方案。这将选中复选框,但要阅读它,你需要将复选框的值设置为1。+1我以前不知道这一点。我将删除我的回复,因为它可能会导致混乱。我试过了,发现它很管用。在这种情况下,checked似乎由值1和0(非真或假)进行验证。@Motes:Yes。我已经添加了这一部分。我是从黑莓手机上读到这篇文章的,所以误读了。我以为用户想选中复选框:如果你重复使用形状参考,它可能会更有效,他可能是为了可读性而这样做的。@PaoloBernasconi:你能解释一下你说的效率较低是什么意思,以及它是如何效率较低的吗?这很有效@Siddharth,您的答案是正确的,以及如何在解析excel文件后在javascript代码中获取值。我需要excel工作簿中的chekbox值,您好,您能帮我以同样的方式获取javascript中的checkbox值吗
Sub Button167_Click()
  Range("Y12").Value = _
    Abs(Worksheets(1).Shapes("Check Box 1").OLEFormat.Object.Value > 0)
End Sub