当一个工作表中有多种Shape类型的时候,可以通过Shape.Type属性值返回一个代表形状类型的MsoShapeType数值。通过该数值可知该图形的类型。
列表如下:
| 名称 |
值 |
说明 |
| msoAutoShape |
1 |
自选图形 |
| msoCallout |
2 |
标注 |
| msoCanvas |
20 |
画布 |
| msoChart |
3 |
图 |
| msoComment |
4 |
批注 |
| msoDiagram |
21 |
图表 |
| msoEmbeddedOLEObject |
7 |
嵌入的 OLE 对象 |
| msoFormControl |
8 |
窗体控件 |
| msoFreeform |
5 |
任意多边形 |
| msoGroup |
6 |
组合 |
| msoIgxGraphic |
24 |
SmartArt 图形 |
| msoInk |
22 |
墨迹 |
| msoInkComment |
23 |
墨迹批注 |
| msoLine |
9 |
线条 |
| msoLinkedOLEObject |
10 |
链接 OLE 对象 |
| msoLinkedPicture |
11 |
链接图片 |
| msoMedia |
16 |
媒体 |
| msoOLEControlObject |
12 |
OLE 控件对象 |
| msoPicture |
13 |
图片 |
| msoPlaceholder |
14 |
占位符 |
| msoScriptAnchor |
18 |
脚本定位标记 |
| msoShapeTypeMixed |
-2 |
混和形状类型 |
| msoTable |
19 |
表 |
| msoTextBox |
17 |
文本框 |
| msoTextEffect |
15 |
文本效果 |
举例如下:
1 Sub 返回SmartArt总数() 2 For Each shp In ActiveSheet.Shapes 3 If shp.Type = 24 Then i = i + 1 4 Next 5 MsgBox "共有 " & i & " 个SmartArt 图形" 6 End Sub
