如果基于工作表,选中复选框检查(Checking if a worksheet-based chec

2019-06-17 14:21发布

我试图使用IF子句,以确定我的复选框,名为“复选框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")

但是,我知道此代码的工作(即使它用于不同的用途):

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

编辑:如果需要更多的信息,我的复选框(有我的网页上是200),位于Sheet1中,通过“Demande”的名称。 每个复选框有相同名字的格式“复选框......”。

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

Answer 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是混合的(灰色框)



Answer 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有关SHEETNAME。 同时更换Check Box 1与相应的复选框名称。



Answer 3:

在大厦前面的 回答 ,您可以利用的事实, 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功能转换True1

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

Worksheets(1).Shapes("Check Box 1").OLEFormat.Object.Value > 0返回False

运用Abs功能转换False0



Answer 4:

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



文章来源: Checking if a worksheet-based checkbox is checked