从工作表中的分组的ActiveX复选框的Excel VBA:GroupName属性

问题描述:

我想循环通过在工作表上的框架中分组在一起的ActiveX复选框。我已经能够找到所有的复选框,但我无法通过VBA代码获取GroupName属性。为了找出脚本,我只使用了一个简单的工作簿,它有两个复选框分组在一个框架中,这个复选框简单地命名为Checkbox1和Checkbox2,它们具有相同的GroupName。这是我迄今为止从工作表中的分组的ActiveX复选框的Excel VBA:GroupName属性

Sub test2() 
    Dim i As Integer 
    Dim cb As Object 
    Dim countItems As Integer 
    Dim checkBox As Object 

    For Each cb In ActiveSheet.Shapes 
     If cb.Name Like "Group*" Then 
    countItems = cb.GroupItems.Count 
    For i = 1 To countItems 
       If cb.GroupItems(i).Name Like "Check*" Then 
        Debug.Print cb.GroupItems(i).Name 
       End If 
      Next i 
     End If 
    Next cb 

    End Sub 

我一直在互联网的搜索解决方案,但似乎我所看到的那些不适合,因为我的复选框被组合在一起。

Sub test4() 
     Dim ole As OLEObject 

     For Each ole In ActiveSheet.OLEObjects 
      If TypeName(ole.Object) = "CheckBox" Then 
       Debug.Print ole.Object.GroupName 
       If ole.Object.GroupName = Group And ole.Object.Value = True Then 
        Debug.Print ole.Object.GroupName 
       End If 
      End If 
     Next ole 
     GroupClear = True 

    End Sub 

这似乎工作,以找到在工作表中的复选框很好,但没有分组在一起。

谢谢你的帮助

+1

'Debug.Print cb.OLEFormat.Object.Object.GroupName'在检查groupname之前可能需要检查对象的类型... –

评论1有助于找到正确的位置。分组似乎需要一点挖的,虽然属性才能到Object.Object.GroupName

Debug.Print cb.OLEFormat.Object.Interior.Parent.ShapeRange.GroupItems(i).Parent.Item(i).OLEFormat.Object.Object.GroupName 

的Object.Object财产大部分属性是可用于搜索或编辑已在额外的控制有用的后的复选框。