如何从Excel 2007中的VBA访问Checkbox

时间:2011-08-03 19:22:46

标签: excel vba excel-2007

添加复选框时,如何从VBA访问该值?

  • 在Excel 2007中,在Developer Ribbon
  • 插入,表单控件,复选框
  • 将复选框重命名为chkMyCheck
  • 添加了Macro to checkbox,我现在有了Module1 with chkMyCheck_Clicked

以下所有内容都失败

Sheets("Sheet1").chkMyCheck.Checked  
Sheets("Sheet1").chkMyCheck.Value  
Sheets("Sheet1").Shapes("chkMyCheck").Checked  
Sheets("Sheet1").Shapes("chkMyCheck").Value  
Sheet1.chkMyCheck.Checked  
Sheet1.chkMyCheck.Value  

Sheet1.Shapes(“chkMyCheck”)似乎找到了对象,但没有公开任何看起来可能返回已检查状态的属性。

3 个答案:

答案 0 :(得分:9)

想出来

If Sheet1.Shapes("chkMyCheck").ControlFormat.Value = xlOn Then
.....

答案 1 :(得分:4)

一种方式:

Dim oCheck As Object
Set oCheck = Sheet1.CheckBoxes("chkMyCheck")
MsgBox (oCheck.Value = xlOn)

编辑:这是另一种方法 - 也许这个方法对你有用......

Sub Tester2()
    Dim sh As Shape
    For Each sh In Sheet1.Shapes
        If sh.Type = msoFormControl Then
            If sh.FormControlType = xlCheckBox Then
                 Debug.Print sh.Name & "=" & sh.ControlFormat.Value
            End If
        End If
    Next sh
End Sub

答案 2 :(得分:0)

为了完整起见,如果您使用ActiveX复选框而不是常规复选框,则语法为

If Sheet1.Shapes("chkMyCheck").OLEFormat.Object.Object.Value Then 
...

找到使用Locals窗口和设置为形状的变量 -

Dim shp as Shape
Set shp = Sheet1.Shapes("chkMyCheck")
Stop