Как получить доступ к флажку из VBA в Excel 2007 - PullRequest
7 голосов
/ 03 августа 2011

Как добавить флажок при доступе к значению из 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  

Sheet1.Shapes«chkMyCheck»), кажется, находит объект, но не предоставляет никаких свойств, которые, вероятно, возвращают проверенное состояние.

Ответы [ 3 ]

9 голосов
/ 03 августа 2011

разобрался

If Sheet1.Shapes("chkMyCheck").ControlFormat.Value = xlOn Then
.....
4 голосов
/ 04 августа 2011

В одну сторону:

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
0 голосов
/ 02 сентября 2015

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

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

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

Dim shp as Shape
Set shp = Sheet1.Shapes("chkMyCheck")
Stop
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...