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

iaqfqrcu  于 2023-05-23  发布在  其他
关注(0)|答案(5)|浏览(379)

我尝试使用一个IF子句来确定我的复选框(名为“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

这不管用调试器告诉我

ActiveSheet.Shapes("Check Box 1")

然而,我知道这段代码是有效的(尽管它有不同的用途):

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

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

7lrncoxx

7lrncoxx1#

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(灰色框)

7rtdyuoh

7rtdyuoh2#

这就是你要尝试的吗?

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替换为相关的工作表名称。另外,将Check Box 1替换为相关复选框名称。

nom7f22z

nom7f22z3#

ActiveX复选框控件的VBA宏代码中,使用

If ActiveSheet.OLEObjects("CheckBox1").Object.Value = True Then

对于Form复选框控件,使用

If ActiveSheet.Shapes("CheckBox1").OLEFormat.Object.Value = xlOn Then

(Use xlOffxlMixed来检查这些相应的状态。)

rwqw0loc

rwqw0loc4#

previousanswers的基础上构建,您可以利用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。
Worksheets(1).Shapes("Check Box 1").OLEFormat.Object.Value > 0返回True
应用Abs函数将True转换为1
如果未选中该复选框,则.Value =-4146。
Worksheets(1).Shapes("Check Box 1").OLEFormat.Object.Value > 0返回False
应用Abs函数可将False转换为0

wqsoz72f

wqsoz72f5#

尝试:Controls("Check Box 1") = True

相关问题