【问题标题】:How to access Checkbox from VBA in Excel 2007如何在 Excel 2007 中从 VBA 访问复选框
【发布时间】:2015-09-02 23:58:09
【问题描述】:

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

  • 在 Excel 2007 中,在开发人员功能区上
  • 插入、表单控件、复选框
  • 将复选框重命名为 chkMyCheck
  • 在复选框中添加了宏,我现在有了带有 chkMyCheck_Clicked 的 Module1

以下全部失败

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") 似乎找到了对象,但没有公开任何可能返回选中状态的属性。

【问题讨论】:

    标签: excel vba excel-2007


    【解决方案1】:

    想通了

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

    【讨论】:

      【解决方案2】:

      一种方式:

      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
      

      【讨论】:

      • 也不起作用。 Excel 2007 中的工作表上没有 CheckBoxes 属性(至少不是我的副本)。
      • 测试对我来说很好:窗体控件复选框,Windows XP 和 7 上的 Excel 2007。对象浏览器中确实没有“CheckBoxes”集合,但这并没有阻止它工作。
      • 如果您在对象浏览器中右键单击并选择显示隐藏的成员,您将看到复选框和复选框。它们已被弃用,但仍然存在。
      【解决方案3】:

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

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

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

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

      【讨论】:

        猜你喜欢
        • 2018-08-15
        • 2017-08-16
        • 2018-02-10
        • 2013-07-20
        • 1970-01-01
        • 1970-01-01
        • 2016-08-23
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多