我在Excel 2010中有一些表单复选框。我需要在单击它们时执行一些常用代码。为此,我想传递一个对Checkbox的引用,但到目前为止我只能将它作为一个形状输入。
要抢占问题,是的,它们需要是表单复选框而不是ActiveX复选框。
我是VBA的新手,所以感谢任何帮助。
Sub CheckBox1_Click()
'I really want this reference to be a Checkbox, not a Shape
Dim shape As Shape
Set shape = ActiveSheet.Shapes("Check Box 1")
DoSomething(shape)
End Sub
Sub DoSomething(MSForms.CheckBox)
'I need the reference to be a checkbox as I need to check
'whether it's checked or not here
End Sub
答案 0 :(得分:3)
在这种情况下,所有复选框都没有不同的点击事件。只有一个。并使用Application.Caller
获取调用它的ckeckbox的名称。将其作为String
传递给相关的子,然后使用它。
<强> UNTESTED 强>
Sub CheckBoxMain_Click()
Dim sName As String
sName = Application.Caller
DoSomething (sName)
End Sub
Sub DoSomething(sCheck As String)
Dim shp As shape
Set shp = ActiveSheet.Shapes(sCheck)
With shp
'~~> Do something
End With
End Sub
您也可以将两者合并为一个,并将其与所有复选框相关联。
Sub DoSomething()
Dim shp As shape
Set shp = ActiveSheet.Shapes(Application.Caller)
With shp
'~~> Do something
End With
End Sub
答案 1 :(得分:2)
这与Siddharth类似,但添加了ControlFormat
的{{1}}属性。 Shape
可以获得ControlFormat
的智能感知,在这种情况下为CheckBox
:
Value