【VBA】図形(Shape)の種類を判定する方法(Typeプロパティ)

Excelシートの図形(Shape)を処理していると、たまに図形の種類を気にすることがあります。
例えば、シート上の全図形に対して処理したいけど画像だけ除外したいなど。
図形の種類の確認はTypeプロパティを使って行います。
今回はこのTypeプロパティの使い方と図形の種類について解説します。
図形(Shape)の種類を判定する方法(Typeプロパティ)
Sub Sample()
'''画像以外の図形を左端に集める
Dim shp As Shape
For Each shp In ActiveSheet.Shapes
''画像以外の図形を判定
If shp.Type <> msoPicture Then
shp.Left = 1
shp.Top = 1
End If
Next
End Subこのサンプルコードは図形(Shape)の種類を判定して、画像以外の図形の位置を動かすものです。
''画像以外の図形を判定
If shp.Type <> msoPicture Thenポイントはこの部分で、shp.Typeが画像でないときのみ処理を進めています。
このようにshp.Typeを確認することで、図形の種類に応じた処理分岐ができます。
よく使う図形の種類
| 図形の種類 | 定数 | 値 |
|---|---|---|
| 図形・オートシェイプ | msoAutoShape | 1 |
| グラフ | msoChart | 3 |
| フリーフォーム | msoFreeform | 5 |
| グループ化された図形 | msoGroup | 6 |
| 線 | msoLine | 9 |
| リンク画像 | msoLinkedPicture | 11 |
| 画像 | msoPicture | 13 |
| テキストボックス | msoTextBox | 17 |
| 表 | msoTable | 19 |
| 図表 | msoDiagram | 21 |
よく使う図形の種類にはこのようなものがあります。
図形の種類を確認したいときに活用してみてください。
また、図形の種類一覧もこの後にまとめて記載します。
(ここにない種類を確認したい際に使ってください)
図形の種類一覧
| 図形の種類 | 定数 | 値 |
|---|---|---|
| msoShapeTypeMixed | -2 | |
| 図形・オートシェイプ | msoAutoShape | 1 |
| 吹き出し | msoCallout | 2 |
| グラフ | msoChart | 3 |
| コメント | msoComment | 4 |
| フリーフォーム | msoFreeform | 5 |
| グループ化された図形 | msoGroup | 6 |
| 埋め込みOLEオブジェクト | msoEmbeddedOLEObject | 7 |
| フォームコントロール | msoFormControl | 8 |
| 線 | msoLine | 9 |
| リンクOLEオブジェクト | msoLinkedOLEObject | 10 |
| リンク画像 | msoLinkedPicture | 11 |
| ActiveXコントロール | msoOLEControlObject | 12 |
| 画像 | msoPicture | 13 |
| プレースホルダー | msoPlaceholder | 14 |
| テキスト効果 | msoTextEffect | 15 |
| メディア | msoMedia | 16 |
| テキストボックス | msoTextBox | 17 |
| スクリプトアンカー | msoScriptAnchor | 18 |
| 表 | msoTable | 19 |
| 描画キャンバス | msoCanvas | 20 |
| 図表 | msoDiagram | 21 |
| インク | msoInk | 22 |
| インクコメント | msoInkComment | 23 |
| スマートアート | msoSmartArt | 24 |
| スライサー | msoSlicer | 25 |
| Webビデオ | msoWebVideo | 26 |
| コンテンツアドイン | msoContentApp | 27 |
| グラフィック | msoGraphic | 28 |
| リンクグラフィック | msoLinkedGraphic | 29 |
| 3Dモデル | mso3DModel | 30 |
| リンク3Dモデル | msoLinked3DModel | 31 |
