2015-09-23 1 views
1

У меня есть код, который перемещается по элементам ActiveX на листе Excel. Этот журнал определяет, какие флажки были выбраны.Почему группировка флажков ActiveX изменяет видимость OLEObject

Dim obj AS OLEObject 
For Each obj In ActiveSheet.OLEObjects 
    If TypeName(obj.Object) = "CheckBox" Then ' loop through all checkboxes to find selections 
     BooCheck = obj.Object 
     If BooCheck = True Then 
      MyArray(j) = obj.Name 'if checkbox selected then store the associated Name 
      j = j + 1 
     End If 
    End If 
Next obj 

Это все работает нормально. Однако, поскольку у меня есть несколько флажков, которые мне нужно перемещать, я думал, что я сгруппировал их вместе с помощью Shift/click в режиме разработки, щелкните правой кнопкой мыши и выберите вариант «Группа». Однако, если я это сделаю, сгруппированные флажки исчезнут из OLEObjects. Куда они идут? Есть ли способ изменить мой код, чтобы найти их, когда они сгруппированы?

ответ

1

Способ ссылаться на OLEObjects, как это:

Public Sub ReferenceTest(oSheet As Worksheet, sGroupName As String) 

    Dim i    As Long 
    Dim oOle   As OLEObject 

    With oSheet.Shapes.Range(sGroupName).GroupItems 
     For i = 1 To .Count 
      Set oOle = .Item(i).OLEFormat.Object 
      Debug.Print oOle.Name, oOle.Object.Value 
     Next i 
    End With 

End Sub 

Просто указать имя листа и группы, например,

ReferenceTest ActiveSheet, "Group 1" 
+0

Спасибо. Это выглядит великолепно! Извините за то, что вы толстый, но как узнать, что такое имя группы? – MiguelH

+0

Дох! Найди его в баре формулы! – MiguelH

+0

Добро пожаловать;) –

Смежные вопросы