図形(Shape)のサイズを変更する方法を解説します。
ShapeオブジェクトのWidth・Heightプロパティを使用します。
また、縦横比を固定したい場合は、
LockAspectRatioプロパティを使用します。
基本構文
対象Shape.Width = 幅(単位:ポイント) 対象Shape.Height = 高さ(単位:ポイント) ' 縦横比固定で変更する場合 対象Shape.LockAspectRatio = msoTrue ' 縦横比を固定 対象Shape.Width = 幅 ' ← 変更に応じてHeightも自動で調整されます。
サンプルコード
Dim 対象図形 As Shape Set 対象図形 = ActiveSheet.Shapes("TextBox 1") ' 幅・高さを指定 対象図形.Width = 200 対象図形.Height = 100 ' 今のサイズから変更 対象図形.Width = 対象図形.Width + 50 対象図形.Height = 対象図形.Height + 20 ' 縦横比を固定して幅を変更 対象図形.LockAspectRatio = msoTrue 対象図形.Width = 200 ' ← Heightも追従します。 ' 縦横比を固定して倍率で拡大縮小 対象図形.LockAspectRatio = msoTrue 対象図形.Width = 対象図形.Width * 1.5 ' 150%に拡大 対象図形.Width = 対象図形.Width * 0.5 ' 50%に縮小 ' セル範囲のサイズに合わせる Dim サイズ基準セル範囲 As Range Set サイズ基準セル範囲 = Range("B2:D5") 対象図形.LockAspectRatio = msoFalse 対象図形.Width = サイズ基準セル範囲.Width 対象図形.Height = サイズ基準セル範囲.Height
解説
図形(Shape)のサイズを変更するには、
変更後のサイズをWidth/Heightプロパティで指定します。
Widthプロパティが横幅、Heightプロパティが高さを表します。
サンプルの通り、元のWidth/Heightを計算に使用することができ、
特に「元の大きさ × 倍率」で倍率指定の拡大/縮小ができます。
また、縦横比を保ったままサイズ変更したい場合は、
LockAspectRatioプロパティにmsoTrueを指定します。
対象図形.LockAspectRatio = msoTrue 対象図形.Width = 200
このように書くと、幅に合わせて高さも自動で調整されます。
逆に、横幅と高さをそれぞれ自由に指定したい場合は、
LockAspectRatioをmsoFalseにしてからWidth/Heightを設定してください。
なお、Width/Heightを変更しても図形の左上位置は変わりません。
つまりサイズを大きくすると、図形は右方向・下方向へ広がります。
中央位置を保ったままサイズ変更したい場合は、
Width/HeightだけでなくTop/Leftもあわせて調整するか、
その機能を持った「ScaleWidth/ScaleHeightメソッド」を使用します。
詳しい解説はこちらの記事をどうぞ
www.limecode.jp