シート上の図形やオブジェクトの種類を調べる、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