すべての図形(Shape)に同じ処理を行う方法を解説します。
WorksheetオブジェクトのShapesプロパティでシート上の図形を取得し、
For Eachステートメントで順番に処理します。
基本構文
For Each 対象Shape In 対象シート.Shapes ' ここに対象Shapeへの処理 Next
サンプルコード
Dim ws対象シート As Worksheet Set ws対象シート = Worksheets("○○") ' すべての図形を赤色で塗りつぶし Dim 対象図形 As Shape For Each 対象図形 In ws対象シート.Shapes 対象図形.Fill.ForeColor.RGB = vbRed Next ' すべての図形を右へ10pt移動 For Each 対象図形 In ws対象シート.Shapes 対象図形.IncrementLeft 10 Next ' テキストボックスだけを非表示 For Each 対象図形 In ws対象シート.Shapes If 対象図形.Type = msoTextBox Then 対象図形.Visible = msoFalse End If Next
解説
シート上にあるすべての図形を取得するには、
WorksheetオブジェクトのShapesプロパティを使用します。
このプロパティで全Shapeをコレクションとして取得できますので、
For Eachステートメントを使って中身をループして処理します。
特定の種類の図形だけを処理したい場合は、
サンプルのようにFor Eachループ内で条件分岐を記載します。
' テキストボックスだけを非表示 For Each 対象図形 In ws対象シート.Shapes If 対象図形.Type = msoTextBox Then 対象図形.Visible = msoFalse End If Next
この条件には「図形の種類」「シェイプの種類」「図形名」「図形内テキスト」などを使用できます。
これらのサンプルコードはこちらの記事をご覧ください。