迭代思考所有(即使分组)形状在一个表/ EXCEL VBA中

下面的代码不包括分组形状。 有工作吗?

Sub LoopThruShapes() Dim sh As Shape i=1 For Each sh In ActiveSheet.Shapes Cells(i, 1).value = sh.name Next End Sub 

来源: http : //www.java2s.com/Code/VBA-Excel-Access-Word/Excel/LoopingthroughaCollectionofShapes.htm

你可以试试这个代码:

 Sub test() EnumShapes ActiveSheet.shapes End Sub Function EnumShapes(shps As Shapes) Dim shp As Shape Dim subshp As Shape For Each shp In shps Debug.Print shp.Name If shp.Type = msoGroup Then For Each subshp In shp.GroupItems Debug.Print Space(2) + subshp.Name Next subshp End If Next shp End Function 

如果分组的形状本身是一个组,则上面的代码不会标识子组,因为Excel将扁平GroupItems集合中的形状,但它枚举了所有形状(不pipe它们的深度如何)。

你会得到这样的输出:

 Rectangle 1 Group 4 Rectangle 2 Rectangle 3 Group 12 Rectangle 6 Rectangle 7 Rectangle 9 Rectangle 10