「エクセル マクロ ShapeRange msoScaleFrom 中央」
という検索キーワードでアクセスがありました。
Excel VBAで、図形を表すShapeオブジェクトやShapeRangeオブジェクトに、倍率を指定して大きさを変更するScaleHeightメソッドと、
ScaleWidthメソッドが用意されています。
これらのメソッドの第3引数Scaleには、どこを基準にして拡大/縮小を行うのかを定数で指定できます。
その基準点を中央にするにはどのような定数を指定すればいいのかを、
「エクセル マクロ ShapeRange msoScaleFrom 中央」
と検索した方は調べていらしたのでしょう。
定数msoScaleFromMiddleで拡大/縮小の基準点が中央になる
拙著『理解するExcel VBA/図形操作の基本』の[2-2. 大きさに関わるプロパティ・メソッド]で解説しているとおり、引数Scaleには、Office.MsoScaleFrom列挙型に定義されている定数を指定できます。
Office.MsoScaleFrom列挙型には定数が3つ指定されており、その中の定数msoScaleFromMiddle(直値:1)を指定すると、
拡大/縮小の基準点が中央になります。
中心を基準に選択図形の幅を2倍にするサンプルマクロ
Excelのワークシート上で、四角形などの図形を1個選択したおいて以下のExcelマクロを実行すると、中心を基準にして幅が2倍になります。
With Selection.ShapeRange
.ScaleWidth 2, msoFalse, msoScaleFromMiddle
End With
End Sub
中心を基準に選択図形の高さを半分にするサンプルマクロ
Excelのワークシート上で、図形を1個選択したおいて以下のExcelマクロを実行すると、中心を基準にして高さが半分になります。
With Selection.ShapeRange
.ScaleHeight 0.5, msoFalse, msoScaleFromMiddle
End With
End Sub
msoScaleFromBottomRightで右下・msoScaleFromTopLeftで左上
Office.MsoScaleFrom列挙型に定義されている定数msoScaleFromBottomRight(直値:2)を指定すれば、
その定数名のとおり基準が右下(BottomRight)になり、
定数msoScaleFromTopLeft (直値:0)を指定した場合には、
基準が左上(TopLeft)になります。
どのような定数を指定できるのかを、オブジェクトブラウザーなどで確認できるようにMicrosoftが作ってくれていないのは、とても残念なことです。
(必ずしも正解を提示できるわけではない)Copilotに力を入れるのいいですが、プログラミングを行う人の調査時間を確実に減らしてくれる、こういう部分の改善を是非進めて欲しいと私は思います。
Home » エクセルマクロ・Excel VBAの使い方 » Shapesコレクション・Shapeオブジェクト » Excel VBAのScaleHeightやScaleWidthで拡大/縮小の基準を中央にするには