我有一个包含多个ActiveX复选框的Excel工作表。他们的名字是" CheckBox1"," CheckBox2"," CheckBox3"如果我将它们称为变量,例如:
If CheckBox1 = True Then
MsgBox "OK"
EndIf
一切正常。
我想用For
循环加载所有复选框的数组值,所以我必须引用它们的名字作为String,以创建连续的名称。我尝试了几种解决方案,例如:
Dim CheckBox As Shape
Set CheckBox = ActiveSheet.Shapes("CheckBox1")
If CheckBox.OLEFormat.Object.Value = 1 Then
MsgBox "OK"
End If
显示"运行时错误'':对象不支持此属性或方法"
If ActiveSheet.CheckBoxes("CheckBox1").Checked = False Then
MsgBox "OK"
End If
显示"运行时错误' 1004':获取CheckBoxes类的属性工作表是不可能的'
If ActiveSheet.Shapes("CheckBox1").Value = xlOn Then
MsgBox "OK"
End If
显示"运行时错误'':对象不支持此属性或方法"
在主题中,如何使用String作为名称来引用ActixeX复选框值?有可能吗?
答案 0 :(得分:2)
我试过这样,将对象定义为OLEObject而不是形状。 s工作,s2失败....放在这里允许格式而不是评论。
Sub test()
Dim s As OLEObject
Dim s2 As Shape
Set s = ActiveSheet.OLEObjects("CheckBox1")
Set s2 = ActiveSheet.Shapes("CheckBox1")
Debug.Print s.Object.Value
Debug.Print s2.OLEFormat.Object.Value
End Sub