図形の種類を取得し種類に応じて処理を分けた【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