和風スパゲティのレシピ

日本語でコーディングするExcelVBA

図形(Shape)を移動する - Top/Left

図形を移動する方法を紹介します。

図形の上端・下端位置を設定する、
Top・Leftプロパティに移動位置を指定します。

基本コード

対象Shape.Top = 上端位置(単位:ポイント)
対象Shape.Left = 左端位置(単位:標準フォント文字数)

サンプルコード

Dim 対象図形 As Shape
Set 対象図形 = ActiveSheet.Shapes("TextBox1")

' 絶対位置で指定
対象図形.Top = 100 ' シート最上部から100pt下に移動
対象図形.Left = 100 ' シート最左部から100文字右に移動

' 今いる位置から移動
対象図形.Top = 対象図形.Top + 100
対象図形.Left = 対象図形.Left + 100

' セルを基準に移動
Dim 移動先セル As Range
Set 移動先セル = Range("C3")
対象図形.Top = 移動先セル.Top
対象図形.Left = 移動先セル.Left

解説

図形(Shape)を移動するには、
移動先の座標をTop/Leftプロパティで指定します。

移動先の指定方法は上記サンプルのように3種類あり、
絶対座標・今の位置から移動・セル指定で移動が可能です。


このTop/Leftは行と列で単位が全く違うことにご注意ください。


行・列にカーソルを合わせた際のピクセルではない方の値で、
行はPt、列は標準フォント基準の文字数となっているようです。

初期設定で高さ14.25、幅8.38となっていますが、
初期セルが横長であることからわかる通り、幅の単位の方がかなり大きいです。

この違いにだけ注意しておきましょう。