我正在尝试使用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
这似乎不起作用,但调试告诉我
存在问题 ActiveSheet.Shapes("Check Box 1")
但是,我知道这段代码有效(即使它有不同的用途):
ActiveSheet.Shapes("Check Box 1").Select
With Selection
.Value = xlOn
编辑: 如果需要更多信息,我的复选框(我的页面上有200个)位于sheet1中,名称为“Demande”。每个Checkbox都具有相同的格式名称“Check Box ...”。
所有帮助将不胜感激。感谢
答案 0 :(得分:19)
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(灰色框)
答案 1 :(得分: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
将Activesheet
替换为相关的工作表名称。同时将Check Box 1
替换为相关的复选框名称。
答案 2 :(得分:3)
在previous answers的基础上,您可以利用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
。
答案 3 :(得分:0)
似乎在您使用的ActiveX复选框控件的VBA宏代码中
如果(ActiveSheet.OLEObjects(“ CheckBox1”)。Object.Value = True)
,对于您使用的“表单”复选框控件,
如果(ActiveSheet.Shapes(“ CheckBox1”)。OLEFormat.Object.Value = 1)
答案 4 :(得分:-2)
尝试:Controls("Check Box 1") = True