図形の種類を取得し種類に応じて処理を分けた【ExcelVBA】

Shape.Typeプロパティを使用して図形の種類を取得

取得した種類で分岐させ、グラフ以外を表示切替

Not演算子で現状TrueならFalseに、FalseならTrueにする形で作成

-2 msoShapeTypeMixed 図形の種類の組み合わせ

1 msoAutoShape AutoShape

2 msoCallout 吹き出し

3 msoChart グラフ

4 msoComment コンポーネント

5 msoFreeform フリーフォーム

6 msoGroup Group

7 msoEmbeddedOLEObject 埋め込み OLE オブジェクト

8 msoFormControl フォーム コントロール

9 msoLine 直線

10 msoLinkedOLEObject リンク OLE オブジェクト

11 msoLinkedPicture リンク画像

12 msoOLEControlObject OLE コントロール オブジェクト

13 msoPicture 画像

14 msoPlaceholder プレースホルダー

15 msoTextEffect テキスト効果

16 msoMedia メディア

17 msoTextBox テキスト ボックス

18 msoScriptAnchor スクリプト アンカー

19 msoTable テーブル

20 msoCanvas Canvas

21 msoDiagram ダイアグラム

22 msoInk インク

23 msoInkComment インク コメント

24 msoIgxGraphic SmartArt グラフィック

25 msoSlicer Slicer

26 msoWebVideo Web ビデオ

27 msoContentApp コンテンツ Office アドイン

28 msoGraphic グラフィック

29 msoLinkedGraphic リンクされたグラフィック

30 mso3DModel 3D モデル

31 msoLinked3DModel リンクされた 3D モデル

ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー

実際に使用したサンプルコード

Option Explicit
Public Sub Sample()

'図形はShapeオブジェクト(図形等の描画オブジェクト・オートシェイプ等)
Dim 図形 As Shape

'すべての図形を繰り返す
For Each 図形 In ActiveSheet.Shapes

'もし図形がグラフ以外なら
If 図形.Type <> msoChart Then

'図形を表示・非表示切り替え(Notは式に対する論理否定)
図形.Visible = Not 図形.Visible

End If

Next

End Sub

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です