| 
    
     |  | そーいう処理は、ボタンの種類を「フォームツールバー」 のものにしておくに限ります。もし現在のボタンがコントロールツールバーの
 ものなら
 
 Sub Del_BT()
 Dim Obj As OLEObject
 
 For Each Obj In ActiveSheet.OLEObjects
 If Obj.ProgId = "Forms.CommandButton.1" Then
 Obj.Delete
 End If
 Next
 End Sub
 
 を1回実行して削除して下さい。そして以下のマクロを1回実行すれば、フォームの
 ボタンを配置 & マクロ登録を自動的に行います。
 
 Sub Add_BT()
 Dim i As Integer
 Dim Tp As Single, Wp As Single, Hp As Single
 
 With Range("A1")
 Wp = .Width: Hp = .Height
 End With
 With ActiveSheet
 For i = 1 To 30
 Tp = .Cells(i, 1).Top
 .Buttons.Add 0, Tp, Wp, Hp
 Next i
 .Buttons.OnAction = "MyButton_Info"
 End With
 End Sub
 
 以下のマクロは削除しないで下さい。
 
 Sub MyButton_Info()
 Dim x As Variant
 
 x = Application.Caller
 If VarType(x) <> 8 Then Exit Sub
 With ActiveSheet.Buttons(x)
 MsgBox "インデックス = " & .Index & vbLf & _
 "名前 = " & .Name & vbLf & "配置した行 = " & _
 .TopLeftCell.Row
 End With
 End Sub
 
 任意のボタンを押すと、そのボタンの情報をメッセージします。
 
 |  |