Как получить доступ к флажку из VBA в Excel 2007

при добавлении флажка, как получить доступ к значению из VBA?

  • в Excel 2007 на ленте разработчика
  • Вставить, Элементы Управления Формы Флажок
  • переименован флажок в chkMyCheck
  • добавлен макрос в флажок, теперь у меня есть Module1 с 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  

Лист1.Фигуры ("chkMyCheck") появляется, чтобы найти объект, но не предоставляет никаких свойств это похоже на возвращение проверенного состояния.

3 ответов


понял

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

одним из способов:

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

Edit: вот еще один метод-возможно, этот будет работать для вас...

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

для полноты, если вы используете флажок ActiveX вместо обычного флажка, синтаксис

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

найдено с помощью окна Locals и переменной, установленной в форму -

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