「excel.shapes 全選択 vb」
「エクセル vba すべてのshapeを選択」
といった検索で、このサイト・インストラクターのネタ帳へのアクセスが時折あります。
アクティブシート上のすべての図形を選択するVBA(Visual Basic for Applications)のコードを探している方による検索です。
参考になりそうなマクロを3つご紹介しておきます。
For Each~Nextループで全Shapeを選択するサンプルマクロ
プログラミング経験のある方にとっては、以下のようなFor Each~Nextループを使ったマクロがわかりやすいでしょう。
Dim shp As Shape
For Each shp In ActiveSheet.Shapes
shp.Select Replace:=False
Next
End Sub
アクティブなシート上の全図形を表すShapesコレクションオブジェクトに対してFor Each~Nextループを回して、各ShapeオブジェクトのSelectメソッドで選択を行っています。Shape.Selectメソッドの引数・ReplaceにFalseを指定することで、既に選択されているShapeの選択状態を保持したまま追加する形で選択を行っています。
For~Nextループで全Shapeを選択するサンプルマクロ
オブジェクト変数を使うFor Each~Nextループは、カウンター変数を使うFor~Nextループでも書けますから、以下のような書き方もできます。
Dim i As Long
With ActiveSheet.Shapes
For i = 1 To .Count
.Item(i).Select Replace:=False
Next
End With
End Sub
オブジェクト変数を使ったFor Each~Nextループか、カウンター変数を使ったFor~Nextループかの違いで、考え方は同じです。
Shapes.SelectAllメソッドで全Shapeを選択するサンプルマクロ
Shapesコレクションオブジェクトには、すべてを選択するメソッドが用意されているので、実は、ループ処理をしなくても全選択を一気に行うこともできます。
ActiveSheet.Shapes.SelectAll
End Sub
マクロを作り始めたばかりの方は、まずは、先にご紹介したループ処理の考え方をしっかりと身に着けることをおすすめしますが、逆に、プログラミング経験のある方は、Excelマクロの場合ループを回さなくても済む処理があるということを少しずつ学習していくといいのではないかと思います。
最終更新日時:2021-12-14 14:37
Home » エクセルマクロ・Excel VBAの使い方 » Shapesコレクション・Shapeオブジェクト » VBAですべてのShapeを選択する