【エクセルマクロ】クリックした図形をセルに合わせて移動する

VBA-図形をセルに合わせて移動-アイキャッチ ExcelVBA

エクセルマクロで、図形をクリックするとセルに合わせて移動するVBAコードをご紹介します。

このページのマクロコードは、コピペで使えます。
ぜひ、お試しください。

クリックした図形をセルに合わせて移動

以下のマクロを実行すると、クリックした図形の位置を移動します。


Sub シェイプ移動()

Dim Myobj As Variant
Dim a As Variant

    'クリックしたオブジェクトの名称を取得
    Set Myobj = ActiveSheet.Shapes(Application.Caller)
    
    'クリックした図形のセル番地取得
    a = Myobj.TopLeftCell.Address(0, 0)
    
    '図形を1セル分だけ右側に移動
    Myobj.Left = Range(a).Offset(0, 1).Left

End Sub

 

マクロ実行後

図形をクリックすると、セル1つ分だけ右側へ移動します。


 

図形をクリックするたびに、右へ移動します。


 
 

図形にマクロ登録する

クリックしてオブジェクトを移動させるには、

対象オブジェクトにマクロ登録をする必要があります。
 

【対象オブジェクトにマクロ登録をする方法】

1. 対象オブジェクト上で右クリックして、「マクロの登録」を選択します。

※図形を複数選択した状態で、一度にマクロ登録ができます。


 

2.「マクロの登録」画面で、マクロ名を選択します。(下図①)

3.「OK」をクリックします。(下図②)


 

クリックした図形をセルに合わせて移動(今日の日付に移動)

以下のマクロを実行すると、クリックした図形の位置を移動します。


Sub 図形移動()

Dim Myobj As Variant
Dim a As Variant
Dim Row As Long
Dim i As Long
Dim Myday As String

    '今日の日付を取得
    Myday = Format(Date, "yyyy/mm/dd")
    
    Row = 0

    '3~11行目までループ
    For i = 3 To 11
    
        'A列から今日の日付を検索して行番号を取得
        If Format(Cells(i, 1), "yyyy/mm/dd") = Myday Then
            Row = i
            Exit For
        End If
    Next i

    If Row <> 0 Then
    
        'クリックしたオブジェクトの名称を取得
        Set Myobj = ActiveSheet.Shapes(Application.Caller)
        
        'クリックした図形のセル番地取得
        a = Myobj.TopLeftCell.Address(0, 0)
        
        '図形を移動
        Myobj.Left = Cells(Row, 2).Left
        Myobj.Top = Cells(Row, 2).Top
    End If
    
End Sub

 

マクロ実行後

図形をクリックすると、A列から「今日の日付」を検索して、

該当行に図形を移動します。


 
 
この記事がお役に立ちますと幸いです。
 

・【エクセルマクロ】図形処理を自動化まとめ
 

【エクセルマクロ】図形処理を自動化:超便利7選
...

 

「たった1秒で仕事が片づくExcel自動化の教科書【増強完全版】」
「5時間かかる作業が3時間でできます」ではなく「1秒で終わらせます」へ
毎日の業務を瞬時に終わらせるしくみを解説