指定された移動量に応じて図形を移動するには?

Question 5311 拙著「Excel VBA そのまま使える実用マクロ 500連発」 Previous Next
詳細は こちら サンプルNo.311 ◆ 環境・・ Excel 2007 & Windows Vista

初めまして。突然申し訳ありません。
Excel 500連発の<311 図形を複製して指定セルの左上端に接するように移動する>というマクロがありますが、 これを参考にしてマクロ実行ボタンをクリックするごとに、一定の移動量だけ図形を移動するマクロを作成したいと思っています。
移動量の指定の仕方は、x、y方向に移動量としてあらかじめ任意の数値を入力する、または選択しているセルの列の巾、行の高さの1/*とかを移動量にする、という感じです。
311番のマクロの中の3~5行目のコードをどのように書き換えれば良いのか悩んでいます。
アドバイス頂けないでしょうか?
Answer   Copyright (C) 2009.4.20 永井善王
500-3-311 311番のマクロは、右図のようなワークシートに存在する図形を、複製してから移動させます。
マクロは下記のとおりで、3行目のコードで図形を複製、
4行目で複製した図形の左端からA列の左端までの距離を設定、
5行目で図形の上端からワークシートの上端までの距離を設定しています。距離の単位はポイントです。
Sub 図形を複製して指定セルの左上端に接するように移動する()
    With ActiveSheet
        Set 図形 = .Shapes(1).Duplicate
        図形.Left = .Columns("H").Left
        図形.Top = .Rows(8).Top
    End With
End Sub
以上の説明で分かられたかと思いますが、図形のLeftプロパティとTopプロパティの値 を設定するだけですから、たとえば下記のようなマクロになるのではないでしょうか。
Sub 実行ボタン_Click()
    With ActiveSheet
        現在位置X = .Shapes(1).Left
        現在位置Y = .Shapes(1).Top
        X方向移動量 = 24
        Y方向移動量 = 13.5
        X方向新位置 = 現在位置X + X方向移動量
        Y方向新位置 = 現在位置Y + Y方向移動量
        .Shapes(1).Left = X方向新位置
        .Shapes(1).Top = Y方向新位置
    End With
End Sub
よって、上記マクロの変数「X方向移動量」へ「セルの列の巾」、変数「Y方向移動量」へ「行の高さの1/*」とかを代入するように変えれば実現するかと思います。この場合の単位はポイントで、1ポイントは約0.0353cm(1/72インチ)です。頑張ってください。

 

Excel VBA Macro