Home » エクセルマクロ・Excel VBAの使い方 » Shapesコレクション・Shapeオブジェクト » VBAですべてのShapeを選択する

対象:Excel2007, Excel2010, Excel2013, Windows版Excel2016

「excel.shapes 全選択 vb」
「エクセル vba すべてのshapeを選択」
といった検索で、このサイト・インストラクターのネタ帳へのアクセスが時折あります。

アクティブシート上のすべての図形を選択するVBA(Visual Basic for Applications)のコードを探している方による検索です。

参考になりそうなマクロを3つご紹介しておきます。

For Each~Nextループで全Shapeを選択するサンプルマクロ

プログラミング経験のある方にとっては、以下のようなFor Each~Nextループを使ったマクロがわかりやすいでしょう。

Sub アクティブシートの全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ループでも書けますから、以下のような書き方もできます。

Sub アクティブシートの全Shapeを選択する_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コレクションオブジェクトには、すべてを選択するメソッドが用意されているので、実は、ループ処理をしなくても全選択を一気に行うこともできます。

Sub アクティブシートの全Shapeを選択する_SelectAll()
 ActiveSheet.Shapes.SelectAll
End Sub

マクロを作り始めたばかりの方は、まずは、先にご紹介したループ処理の考え方をしっかりと身に着けることをおすすめしますが、逆に、プログラミング経験のある方は、Excelマクロの場合ループを回さなくても済む処理があるということを少しずつ学習していくといいのではないかと思います。

最終更新日時:2021-12-14 14:37

[スポンサードリンク]

Home » エクセルマクロ・Excel VBAの使い方 » Shapesコレクション・Shapeオブジェクト » VBAですべてのShapeを選択する

「Shapesコレクション・Shapeオブジェクト」の記事一覧

検索


Copyright © インストラクターのネタ帳 All Rights Reserved.

.