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

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

対象:Excel2007, Excel2010, Excel2013

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

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

アクティブシート上の全図形をセルに合わせて移動やサイズ変更をするよう設定するExcelマクロ

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

アクティブシート上の全図形をセルに合わせて移動やサイズ変更をするよう設定するExcelマクロ

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

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

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

[スポンサードリンク]

アクティブシート上の全Shapeをセルに合わせて移動やサイズ変更をするように設定変更するサンプルマクロ

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


Sub アクティブシートの全Shapeをセルに合わせて移動とサイズ変更をするように()
 Dim shp As Shape

 For Each shp In ActiveSheet.Shapes
  shp.Placement = xlMoveAndSize
 Next shp
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を指定すると「セルに合わせて移動やサイズ変更をしない」になります。

ループ処理なしでアクティブシート上の全Shapeをセルに合わせて移動やサイズ変更をするように設定変更するサンプルマクロ

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

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


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

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

アクティブシート上の全図形をセルに合わせて移動やサイズ変更をするよう設定するExcelマクロ

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

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

アクティブシート上の全図形をセルに合わせて移動やサイズ変更をするよう設定するExcelマクロ

プログラミング経験のある方の場合、先のFor Each ~ Next文を使ったマクロのほうが理解しやすいはずですが、Excelに一括処理するようなコマンドが存在している場合は、Shapes.SelectAllのようなメソッドが存在していることも知っておいていただきたいところです。

[スポンサードリンク]

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

TrackBack:0

TrackBack URL

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

「DrawingObjectsオブジェクト」の記事一覧

検索


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

.