Home » エクセルマクロ・Excel VBAの使い方 » DrawingObjects » VBAで全図形をセルに合わせて移動やサイズ変更をするように

VBAで全図形をセルに合わせて移動やサイズ変更をするように

対象:Excel2007, Excel2010, Excel2013

「excel vba shape セルに合わせて移動やサイズ変更をする」
「excel マクロ 図形 セルに合わせて移動やサイズ変更をする まとめて」
という検索で、このサイト『インストラクターのネタ帳』へのアクセスがありました。

Excelのワークシート上に作成した図形は、2013以降の場合[図形の書式設定]作業ウィンドウから、

[図形の書式設定]作業ウィンドウ-[図形のオプション]-[プロパティ]

2010・2007の場合[図形の書式設定]ダイアログから、

[図形の書式設定]ダイアログ-[オブジェクトの位置関係]

  • セルに合わせて移動やサイズ変更をする
  • セルに合わせて移動するがサイズ変更はしない
  • セルに合わせて移動やサイズ変更をしない

といった設定ができます。

「excel vba shape セルに合わせて移動やサイズ変更をする」
「excel マクロ 図形 セルに合わせて移動やサイズ変更をする まとめて」
という検索キーワードは、この設定を行うExcelマクロ・VBAのコードを探している方によるものです。

全Shapeをセルに合わせて移動やサイズ変更するよう設定するサンプル

以下のマクロを実行すると、アクティブシート上のすべての図形が「セルに合わせて移動やサイズ変更をする」に設定されます。

Sub 全Shapeをセルに合わせて移動とサイズ変更をするように()
 Dim shp As Shape
 For Each shp In ActiveSheet.Shapes
  shp.Placement = xlMoveAndSize
 Next
End Sub

「セルに合わせて移動やサイズ変更をする」に設定変更する操作をマクロ記録すると、以下のようなコードが作られます。

Sub Test()
 Selection.Placement = xlMoveAndSize
End Sub

このコードを参考にして、全Shapeにループを回して、
  For Each shp In ActiveSheet.Shapes

各ShapeオブジェクトのPlacementプロパティをxlMoveAndSizeに設定するようにしたのが、
  shp.Placement = xlMoveAndSize

上記のマクロです。

Shape.Placementプロパティに、定数xlMoveを指定すると「セルに合わせて移動するがサイズ変更はしない」に、定数xlFreeFloatingを指定すると「セルに合わせて移動やサイズ変更をしない」になります。

ループなしでセルに合わせて移動やサイズ変更をするよう設定するサンプル

ループ処理はExcelマクロに限らず、どんなプログラミング言語でも大切な概念ですから、Excelマクロを自分で作れるようになりたいという方は上記の、
  For Each shp In ActiveSheet.Shapes
  Next
というFor Each ~ Next文は是非使えるようになることをおすすめします。

ですが実は、全図形をセルに合わせて移動やサイズ変更をするように設定変更するには、ループ処理を行わなくてもできてしまいます。

Sub 全Shapeをセルに合わせて移動とサイズ変更をするように_ループなし()
 ActiveSheet.Shapes.SelectAll
 Selection.Placement = xlMoveAndSize
End Sub

Shapesコレクションオブジェクトには、SelectAllという(名前のとおり)全部を選択するメソッドが用意されています。

Excel.Shapes.SelectAll

Shapes.SelectAllメソッドで全Shapeを選択しておいてから、マクロ記録で作られる、
  Selection.Placement = xlMoveAndSize
というコードを実行すれば、全図形がセルに合わせて移動とサイズ変更するようになります。

ちなみに、この「Selection.Placement」は、隠しオブジェクトになっているDrawingObjectsコレクションのPlacementプロパティです。

Excel.DrawingObjects.Placement

最終更新日時:2021-12-19 06:00

[スポンサードリンク]

Home » エクセルマクロ・Excel VBAの使い方 » DrawingObjects » VBAで全図形をセルに合わせて移動やサイズ変更をするように

「DrawingObjects」の記事一覧

検索


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

.