エクセルマクロで、図形をクリックするとセルに合わせて移動する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秒で終わらせます」へ
毎日の業務を瞬時に終わらせるしくみを解説
リンク