シート上の図形やオブジェクトの種類を調べる、Typeプロパティを解説します。
基本構文
Dim 図形 As Shape Set 図形 = Worksheets("○○").Shapes("シェイプ名") Debug.Print 図形.Type ' 図形の種類が数値で表示されます。
Typeプロパティの返り値一覧
Shapeとして取得できる図形の種類には、
以下に示す通りグラフやフォームコントロールも含まれています。
返り値 | 定数名 | 図形の種類 |
---|---|---|
-2 | msoShapeTypeMixed | |
1 | msoAutoShape | 図形・オートシェイプ |
2 | msoCallout | 吹き出し |
3 | msoChart | グラフ |
4 | msoComment | コメント |
5 | msoFreeform | フリーフォーム |
6 | msoGroup | グループ化された図形 |
7 | msoEmbeddedOLEObject | 埋め込みOLEオブジェクト |
8 | msoFormControl | フォームコントロール |
9 | msoLine | 線 |
10 | msoLinkedOLEObject | リンクOLEオブジェクト |
11 | msoLinkedPicture | リンク画像 |
12 | msoOLEControlObject | ActiveXコントロール |
13 | msoPicture | 画像 |
14 | msoPlaceholder | プレースホルダー |
15 | msoTextEffect | テキスト効果 |
16 | msoMedia | メディア |
17 | msoTextBox | テキストボックス |
18 | msoScriptAnchor | スクリプトアンカー |
19 | msoTable | 表 |
20 | msoCanvas | 描画キャンバス |
21 | msoDiagram | 図表 |
22 | msoInk | インク |
23 | msoInkComment | インクコメント |
24 | msoSmartArt | スマートアート |
25 | msoSlicer | スライサー |
26 | msoWebVideo | Webビデオ |
27 | msoContentApp | コンテンツアドイン |
28 | msoGraphic | グラフィック |
29 | msoLinkedGraphic | リンクグラフィック |
30 | mso3DModel | 3Dモデル |
31 | msoLinked3DModel | リンク3Dモデル |
サンプルコード(シート内のテキストボックスだけを削除)
例えばシート内のテキストボックスだけを削除する場合は、
以下のコードを実行します。
' シート内のすべてのテキストボックスを削除する Dim シェイプ As Shape For Each シェイプ In Worksheets("○○").Shapes If シェイプ.Type = msoTextBox Then シェイプ.Delete End If Next
Typeを判別して特定の図形にのみ処理を行いたい場合は、
上記のようなコードを使用してください。
なお注意点として、選択中の図形をSelectionで取得した場合は、
対象はShapeではなくDrawingObjectという型で取得されます。
DrawingObjectにはTypeプロパティがありませんので、
ShapeRangeプロパティを使用し、ShapeにしてからTypeを調べてください。
' 選択中の図形がテキストボックスであれば削除する If Selection.ShapeRange.Type = msoTextBox Then Selection.Delete End If
' 選択したすべての図形のうちテキストボックスを削除する Dim シェイプ As Shape For Each シェイプ In Selection.ShapeRange If シェイプ.Type = msoTextBox Then シェイプ.Delete End If Next