動作検証バージョン:64bit Windows 10 Pro + 32bit Excel(バージョン2205 ビルド15225.20204 Microsoft Store)
「vba グラフか図形か判定」
という検索キーワードでアクセスがありました。
シート上のShapeが、グラフなのかグラフではないのかを判定するにはどのようなコードを書けばいいのか探していた方による検索です。
本当にグラフかどうかだけを判定すればいいのか気になるところですが、参考になりそうなExcelマクロをご紹介しておきます。
[スポンサードリンク]
Shapeがグラフかどうか判定するサンプルマクロ
以下のExcelマクロを実行すると、アクティブシート上のShapeが順番に選択されて、「グラフです!」または「グラフではありません。」とメッセージボックスに表示されます。
Sub Shapeがグラフかどうか判定する()
Dim shp As Shape
For Each shp In ActiveSheet.Shapes
shp.Select
Application.ScreenUpdating = True
If shp.HasChart Then
MsgBox "グラフです!"
Else
MsgBox "グラフではありません。"
End If
Next
End Sub
Dim shp As Shape
For Each shp In ActiveSheet.Shapes
shp.Select
Application.ScreenUpdating = True
If shp.HasChart Then
MsgBox "グラフです!"
Else
MsgBox "グラフではありません。"
End If
Next
End Sub
Shapeオブジェクトに用意されているHasChartプロパティを使えば、
グラフを持つShapeかどうかを判定できます。
Shape.HasChartプロパティの戻り値は、「As MsoTriState」と定義されていますが、論理値と同じように扱えるので、
If shp.HasChart Then
というIf文にしています。
グラフではないShapeを順番に処理するサンプルマクロ
グラフではないShapeのみを順番に処理したいということであれば、以下のマクロが参考になるでしょう。
Sub グラフではないShapeを順番に選択する()
Dim shp As Shape
For Each shp In ActiveSheet.Shapes
If Not shp.HasChart Then
shp.Select
Application.ScreenUpdating = True
MsgBox "グラフではないShapeです。"
End If
Next
End Sub
Dim shp As Shape
For Each shp In ActiveSheet.Shapes
If Not shp.HasChart Then
shp.Select
Application.ScreenUpdating = True
MsgBox "グラフではないShapeです。"
End If
Next
End Sub
[スポンサードリンク]
Home » エクセルマクロ・Excel VBAの使い方 » Shapesコレクション・Shapeオブジェクト » VBAでShapeがグラフかを判定するには-HasChartプロパティ