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

Pao*_*oni 20 checkbox excel vba excel-vba-mac

我正在尝试使用IF子句来确定是否选中了名为"Check Box 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
Run Code Online (Sandbox Code Playgroud)

这似乎不起作用,但调试告诉我有一个问题

ActiveSheet.Shapes("Check Box 1")
Run Code Online (Sandbox Code Playgroud)

但是,我知道这段代码有效(即使它有不同的用途):

ActiveSheet.Shapes("Check Box 1").Select
With Selection
.Value = xlOn
Run Code Online (Sandbox Code Playgroud)

编辑:如果需要更多信息,我的复选框(我的页面上有200个)位于sheet1中,名称为"Demande".每个Checkbox都具有相同的格式名称"Check Box ...".

所有帮助将不胜感激.谢谢

Mot*_*tes 24

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
Run Code Online (Sandbox Code Playgroud)

检查1,未选中-4146,混合2(灰色框)


Sid*_*out 10

这是你在尝试什么?

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
Run Code Online (Sandbox Code Playgroud)

替换Activesheet为相关的工作表名称.也请替换Check Box 1相关的复选框名称.

  • 这将选中该框,但要读取它,您需要设置检查值为1. (2认同)

All*_*n F 7

在ActiveX复选框控件的 VBA 宏代码中,您可以使用

If ActiveSheet.OLEObjects("CheckBox1").Object.Value = True Then
Run Code Online (Sandbox Code Playgroud)

对于表单复选框控件,您可以使用

If ActiveSheet.Shapes("CheckBox1").OLEFormat.Object.Value = xlOn Then
Run Code Online (Sandbox Code Playgroud)

(使用xlOffxlMixed来检查这些各自的状态。)