Excel VBA コマンドボタン(マクロ実行ボタン)を作成する

スポンサーリンク
スポンサーリンク

オリジナルコマンドボタンを作成する方法

作成したマクロを実行するための「ボタン」や「メニュー」を作成するには、CommandBars【コマンドバーズ】コレクションのAdd【アド】メソッドを使用してコマンドバーを表すCommandBar【コマンドバー】オブジェクトを作成します。

作成したCommnadBar【コマンドバー】オブジェクトのコントロールを表すCommandBarControls【コマンドバーコントロールズ】コレクションをCommandBar【コマンドバー】オブジェクトのControls【コントロールズ】プロパティで参照してCommandBarControls【コマンドバーコントロールズ】コレクションのAdd【アド】メソッドを使用してコマンドバーにコントロールを追加して各プロパティを使用してコントロールを設定します。

CommandBar【コマンドバー】オブジェクトのVisible【ビジブル】プロパティを使用して作成したCommandBar【コマンドバー】オブジェクトを「アドイン」タブ内のリボンに表示します。

コマンドボタンを追加するコードはブックが開いたタイミングで実行される「イベントプロシージャ」のWorkbook Open【ワークブックオープン】プロシージャに記述します。


「メッセージ1」マクロを実行する「ボタン」を作成するコード例

Private Sub Workbook_Open()
Dim ボタン As CommandBar
Dim コントロール As CommandBarButton
On Error Resume Next
CommandBars("オリジナルボタン").Delete
Set ボタン = Application.CommandBars.Add _
(Name:="オリジナルボタン", Temporary:=True)
Set コントロール = ボタン.Controls.Add(Temporary:=True)
With コントロール
.Caption = "オリジナルボタン"
.FaceId = 6862
.Style = msoButtonIconAndCaption
.OnAction = "メッセージ1"
.BeginGroup = True
.TooltipText = "メッセージ1マクロを実行します。"
End With
ボタン.Visible = True
End Sub

コードの解説

2行目【Dim ボタン As CommandBar】
追加するコマンドバーを格納する変数「ボタン」をオブジェクト型(CommandBar)で宣言します。


3行目【Dim コントロール As CommandBarButton】
追加したコマンドバーに追加するコントロールを格納する変数「コントロール」をオブジェクト型(CommandBarButton)で宣言します。


4行目【On Error Resume Next】
次の行5行目でCommandBar【コマンドバー】オブジェクトのDelete【デリイト】メソッドで「オリジナルボタン」という名前のCommandBar【コマンドバー】オブジェクトを削除する命令をだしますが、対象オブジェクトが存在しない場合、エラーが発生してデバックモードになってしまうのでOn Error【オンエラー】ステートメントのResume Next【リズームネクスト】ステートメントを使用してエラーを無視して処理を続行させます。


5行目【CommandBars(“オリジナルボタン”).Delete】
次の6行目でコマンドバーを追加しますが、既に同じ名前のコマンドバーが既に存在しているとエラーになるので、Application【アプリケーション】オブジェクトのCommansBars【コマンドバーズ】プロパティで名前が「オリジナルボタン」のCommandBar【コマンドバー】オブジェクトを参照して存在する場合は削除します。


6行目~7行目【Set ボタン = Application.CommandBars.Add _(Name:=”オリジナルボタン”, Temporary:=True)】
Application【アプリケーション】オブジェクトのCommandBars【コマンドバーズ】コレクションのAdd【アド】メソッドで引数Name【ネーム】に指定した名前のコマンドバーを追加して、オブジェクト変数の「ボタン」に代入します。

引数Temporary【テンポラリ】にTrueを設定したので、このブックが閉じられたときにコマンドバーは削除されます。Falseに設定した場合はこのブックが閉じられてもコマンドバーは残り、他のブックを開いた場合にも追加したコマンドバーは表示されます。


8行目【Set コントロール = ボタン.Controls.Add(Temporary:=True)】
CommandBarConrols【コマンドバーコンオロールズ】コレクションのAdd【アド】メソッドでコマンドバーのコントロールを表すCommandBarControl【コマンドバーコントロール】オブジェクトのCommandBarButton【コマンドバーボタン】オブジェクトをオブジェクト変数の「コントロール」に代入します。

CommandBarConrols【コマンドバーコンオロールズ】コレクションはCommandBar【コマンドバー】オブジェクトのControls【コントロールズ】プロパティを使用して参照します。ボタンを作成するので、引数Type【タイプ】は省略します。


9行目【With コントロール】
コマンドバーのコントロールを表すCommandBarButton【コマンドバーボタン】オブジェクトが格納されているオブジェクト変数「コントロール」をWith【ウィズ】ステートメントで指定します。


10行目【.Caption = “オリジナルボタン”】
CommandBarButton【コマンドバーボタン】オブジェクトのCaption【キャプション】プロパティを使用してコントロールに表示する文字列を指定します。


11行目【.FaceId = 6862】
CommandBarButton【コマンドバーボタン】オブジェクトのFaceID【フェイスアイディ】プロパティを使用してコントロールに表示するアイコンをID(番号)で指定します。

IDを確認するには「コマンドバーのボタンイメージ FaceIDを取得する」をご覧ください。


12行目【.Style = msoButtonIconAndCaption】
CommandBarButton【コマンドバーボタン】オブジェクトのStyle【スタイル】プロパティを使用してコントロールの表示方法を「テキストとアイコン」に指定します。


14行目【.OnAction = “メッセージ1″】
CommandBarButton【コマンドバーボタン】オブジェクトのOnAction【オンアクション】プロパティにコントロールを押したときに実行するマクロを文字列で登録します。


15行目【.BeginGroup = True】
CommandBarButton【コマンドバーボタン】オブジェクトのBeginGroup【ビギングループ】プロパティにTrueを設定して区切り線を表示します。


16行目【.TooltipText = “メッセージ1マクロを実行します。”】
CommandBarButton【コマンドバーボタン】オブジェクトのTooltipText【ツールチップテキスト】プロパティにポップヒントに表示する文字列を指定します。


18行目【ボタン.Visible = True】
CommandBar【コマンドバー】オブジェクトのVisible【ブジブル】プロパティを使用して作成したコマンドバーを「アドイン」タブのリボンに表示します。


実行するマクロの「メセージ1」のコード例

Private Sub メッセージ1()
MsgBox "オリジナルボタンが押されました。"
End Sub

コードの解説

実行するマクロは、標準モジュールにPrivate【プライベート】キーワードを使用したPrivate Sub【プライベートサブ】プロシージャ内に記述します。Private【プライベート】キーワードを使用するとマクロ実行ダイアログの一覧に表示されません。


実行結果



以上で、コマンドボタン(マクロ実行ボタン)を作成する方法についての解説を終了します。ありがとうございました。

スポンサーリンク
スポンサーリンク
スポンサーリンク
スポンサーリンク