目的
- ワークシートにボタンを挿入する。
- ボタンにマクロを登録する。
下記の方法でボタンを作成してみたものの、ボタンを押した時のアニメーションというか、ボタンを押してもボタンがへこまない状態になってしまいました。ボタンに登録したマクロは実行されましたが、原因がわからないままです。
その一例
- 白紙のワークシートでテストしてみます。

Sub 全オートシェイプ削除()
ActiveSheet.Shapes.SelectAll
Selection.Delete
End Sub
Sub ボタン作成_表示名設定_マクロ登録()
Dim a
Set a = ActiveSheet.Buttons.Add(54, 13.5, 108, 40.5)
a.Caption = "「全オートシェイプ削除」を実行するボタン"
a.OnAction = "全オートシェイプ削除"
End Sub
- 「Set a = ActiveSheet.Buttons.Add(54, 13.5, 108, 40.5)」
左,上,幅,高さをポイント単位で指定

セルの位置は以下のようなマクロで取得出来ると思います。
Sub B2C4のLeft_Top_Width_Height取得()
With Range("B2:C4")
Debug.Print .Left
Debug.Print .Top
Debug.Print .Width
Debug.Print .Height
End With
End Sub

ボタン表示名。
マクロ登録。


- ボタンが削除されました。

OnAction で引数を渡す
- 白紙のワークシートでテストしてみます。

Sub 引数を受け取るマクロ(引数1, 引数2, 引数3)
Debug.Print 引数1; Spc(1); TypeName(引数1)
Debug.Print 引数2; Spc(1); TypeName(引数2)
Debug.Print 引数3; Spc(1); TypeName(引数3)
End Sub
Sub 引数を渡すボタン作成()
Dim a
Set a = ActiveSheet.Buttons.Add(54, 13.5, 108, 40.5)
a.Caption = "「引数を受け取るマクロ」を実行するボタン"
a.OnAction = "'引数を受け取るマクロ 1,""A"",true'"
End Sub
- 「”‘引数を受け取るマクロ 1,””A””,true’”」
- マクロ名、スペースの後に引数を列挙しています。””A”” は文字列なのでダブルクォーテーションで囲んでいます。
- 上記 1 をシングルクォーテーション「’」で囲んいます。
- 上記 2 をダブルクォーテーション「”」で囲んでいます。
- 実行結果は以下のようになりました。


(2)マクロの登録をクリック

(2)キャンセルをクリック


- 実行結果は以下のようになりました。なぜか 1 の前にスペースが出力されてしまいますが、とりあえず引数を受け取る事が出来ました。

マクロストック
Private Sub OnActionに登録するマクロ()
MsgBox "「OnActionに登録するマクロ」を実行しました。"
End Sub
Sub 別の方法でボタン作成()
Dim a
Set a = Sheet1.Shapes.AddFormControl(xlButtonControl, 54, 13.5, 108, 40.5)
a.DrawingObject.Caption = "OnActionに登録するマクロ"
a.OnAction = "OnActionに登録するマクロ"
End Sub


テスト環境
- Windows 10(64 ビット)
- Microsoft Office Excel 2003
以上、閲覧ありがとうございました。
