【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 |