如何从Excel 2007中的VBA访问checkbox

在添加checkbox时,如何访问VBA中的值?

  • 在Excel 2007中,在开发人员function区上
  • 插入,表单控件,checkbox
  • 将checkbox重命名为chkMyCheck
  • 添加macros到checkbox,我现在有模块1与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”)似乎查找对象,但不公开任何可能返回检查状态的属性。

弄清楚了

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

单程:

 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 

为了完整起见,如果您使用ActiveXcheckbox而不是常规checkbox,则语法为

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

find使用本地窗口和variables设置为形状 –

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