我试图使用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”的名称。 每个复选框有相同名字的格式“复选框......”。
所有帮助将不胜感激。 谢谢
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是混合的(灰色框)
这是你想什么呢?
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
与相应的复选框名称。
在大厦前面的 回答 ,您可以利用的事实, 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
。
尝试: Controls("Check Box 1") = True