为什么分组ActiveXcheckbox会改变OLEObject的可见性

我有一些代码循环通过Excel工作表上的ActiveX控件。 这将logging哪些checkbox已被选中。

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 

这一切工作正常。 但是,由于我有一些checkbox,我需要移动,我想我会把它们按Shift /单击devise模式,右键单击并select“组”选项。 但是,如果我这样做,分组checkbox将从OLEObjects中消失。 他们去哪里? 有没有办法改变我的代码,当他们分组时find他们?

引用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"