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キーワードを使用すると
マクロ実行ダイアログの一覧に表示されません。


実行結果



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

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

フォローする

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