ワークシート上に挿入した図形を、セルの中央に配置したい場合はどのようにVBAを記述すればよいのでしょうか。
.Top、.Left、.Width、.Height を使う
図形をセルの中央に揃える場合は、以下の手順で図形の位置を指定する必要があります。
- 図形の上端及び左端を「.Top」「.Left」で移動先セルに指定する。
- セル内の位置を「.Width」「.Height」で中央を指定する。
まずは、結論から言うと、図形をセルの中央揃えにするVBAは以下のようになります。
Sub 図形の中央ぞろえ()
ActiveSheet.Shapes("ひし形 1").Left = Range("A2")
ActiveSheet.Shapes("ひし形 1").Top = Range("A2")
ActiveSheet.Shapes("ひし形 1").Left = Range("A2").Left + (Range("A2").Width - ActiveSheet.Shapes("ひし形 1").Width) / 2
ActiveSheet.Shapes("ひし形 1").Top = Range("A2").Top + (Range("A2").Height - ActiveSheet.Shapes("ひし形 1").Height) / 2
End Sub
1 図形の上端及び左端を「.Top」「.Left」で移動先セルに指定する。
4行目の
「ActiveSheet.Shapes(“ひし形 1”).Top = Range(“A2”)」
で、図形「ひし形1」の上端の位置をセル「A2」に指定します。
ひし形1の左端も同様です。
2 セル内の位置を「.Width」「.Height」で中央を指定する。
5行目の
「ActiveSheet.Shapes(“ひし形 1”).Left = Range(“A2”).Left + (Range(“A2”).Width – ActiveSheet.Shapes(“ひし形 1”).Width) / 2」
で、図形「ひし形1」のセル「A2」内での位置を指定しています。
日本語で書くと
「ひし形1の左端の位置 = (A2の左端 + A2のセル幅-ひし形1の幅)÷2」
ということになります。
中央揃えにはよく使う記法ですので、覚えておいて損はないです。
コメント