_基本

図形を複数選択する方法【Select Replace】【Rangeプロパティ】【ExcelVBA】

複数の図形を選択する

図形(オートシェイプ)を複数選択したいときは、以下のような方法があります。

Replace:=False

Select の引数 Replace を False にすることで、選択を追加していくことができます。
True にすると先に選択されていたものが解除されます。

Public Sub Replace()
  ActiveSheet.Shapes(1).Select Replace:=False
  ActiveSheet.Shapes("図形 1").Select False 'False だけでもOK
End Sub

For Each でループ処理に組み込めば、条件を満たす図形を複数選択することができます。
※下記にサンプルコードがあります

Range(Array())

Rangeプロパティを使って複数選択も可能です。
Array() の中に選択したい図形を指定するだけで、一気に同時選択されます。

Public Sub Range()
  ActiveSheet.Shapes.Range(Array(1, 3)).Select
  ActiveSheet.Shapes.Range(Array("図形 1", "図形 3")).Select
End Sub

 

条件を満たす図形を複数選択するサンプルコード

Public Sub ForEach()
  Dim shp As Shape

  For Each shp In ActiveSheet.Shapes
    If shp.Type = msoAutoShape Then
       '図形が円のときの処理
        If shp.AutoShapeType = msoShapeOval Then
            shp.Select Replace:=False '図形を選択
        End If
    End If
  Next shp

End Sub

 

注意点

  • ループ処理以外で図形を選択する場合、図形の指定はインデックス番号でも図形名でもOKです。
  • For Each を実行する前に選択していたものは自動で解除されないので、一緒に選択されます。
    ※どこかのセルを選択しておく等の工夫が必要です。

 

関連記事

コメント