ボタンを配置する位置が予め決まっていない場合には VBA でボタンを作成する必要があります
配置したボタンを後で使用するような場合には 下のように作成したボタンをオブジェクト変数に格納すると便利です
Dim o_btn As Button
Set o_btn = Worksheets(1).Buttons.Add( …
ボタンをクリックした際に押されたボタンの情報を取得するために Name プロパティを設定しておきます
押されたボタンから行や列を特定できるようにしておくのもポイントです
With Worksheets(1).Buttons.Add(Worksheets(1).Cells(1, 1).Left, _
Worksheets(1).Cells(1, 1).Top, _
Worksheets(1).Cells(1, 1).Width, _
Worksheets(1).Cells(1, 1).Height)
.Text = "ボタン1"
.Name = "ROW_1"
.OnAction = "Macro1"
.Font.Name = "MS ゴシック"
.Font.ColorIndex = 3
End With