【Excel VBA】ボタンにマクロを登録する方法!引数の設定も!

Excelでボタンにマクロを登録したいときはないでしょうか。

けど、そんな中で悩むことは、

・Excelシートに配置したボタンにマクロを登録したいが方法がよくわからない
・引数付きでボタンにマクロを登録したいが方法がよくわからない

ですよね。

今回はそんなお悩みを解決する

・Excelシートに配置したボタンにマクロを登録する方法
・引数付きでボタンにマクロを登録する方法
・ボタン押下後にマクロを実行するか確認する方法

についてまとめます!

Excelでボタンにマクロを登録するイメージ

Excelでボタンにマクロを登録するイメージについて説明をします。

まずはかんたんなマクロを用意します。
サンプルではメッセージが表示される内容となっています。

次にボタンを配置し、マクロを関連付けします。

ボタンをクリックするとマクロが実行されます。

次にメッセージの内容にボタンの引数の値をマクロへ渡し表示させます。

マクロ実行ボタン.xlsm!'メッセージを表示するマクロ_引数受け取り "マクロを実行する"'

さらに、マクロ実行を行う確認メッセージを表示させ、「はい」であれば実行、「いいえ」であれば実行キャンセルの条件を加えていきます。

それでは早速実装して試してみましょう。

ボタンに登録するマクロのVBA

ボタンに登録するマクロのVBAを用意しましょう。

処理内容はマクロ実行後にメッセージが表示されるシンプルな内容となっています。

VBAの設定

VBAは以下の通りです。

Sub メッセージを表示するマクロ()
    
    MsgBox "マクロを実行しました。", vbInformation
    
End Sub

VBAの実装手順

実装手順は以下の通りです。

Excel側にVBAを実装していきます。

①Excelを新規に開き、「開発」タブをクリックし、「VisualBasic」をクリックします。
もしくはショートカットキー「Alt」+「F11」でもOKです。

②標準モジュールを追加します。
左ペインのVBAProjectを右クリックし、「挿入」、「標準モジュール」を選択します。

③右ペインのウインドウに上記のVBAを入力します。

こちらで完了です。

VBAを単体実行する

まずは、正常にVBAが機能しているか確認のため、単体実行をしてみましょう。

VBE上の実行ボタンをクリックします。

はい、できましたね。

ボタンをワークシート上へ配置する

ボタンをワークシートへ配置していきます。
開発タブの挿入アイコンをクリックし、フォームコントロールの「ボタン」を選択します。

ボタンが挿入されたらボタンの中の表示名を適当な内容に変更します。

続いて、ボタンを右クリックし、マクロの登録を選択します。
上記VBAを選択し、「OK」を押下します。

ボタンからマクロを実行する

ボタンからマクロを実行してみましょう。

はい、できましたね。

ボタンに引数を設定しマクロへ渡す設定をする

次に、ボタンに引数を設定しマクロへ渡す設定をしてみましょう。

VBAの設定

サンプルコードを以下のように変更します。

Sub メッセージを表示するマクロ_引数受け取り(strInfo As String)
    
    MsgBox strInfo & "ボタンからマクロを実行しました。", vbInformation
    
End Sub

メッセージ部分に変数を加え、引数で受け渡された値を代入するようにしています。

ボタンの設定

次にボタンに登録されているマクロに引数を持たせるように設定変更をします。

ボタンを右クリックし、マクロの登録を選択します。

以下を入力します。

マクロ実行ボタン.xlsm!'メッセージを表示するマクロ_引数受け取り "マクロを実行する"'

タカヒロ
タカヒロ
VBAに引数を追加した場合はマクロの登録ウインドウからは表示がされなくなります。

ボタンから引数を受け渡しマクロを実行する

ボタンから引数を受け渡しマクロを実行してみましょう。

ボタンをクリックします。

はい、引数の値がメッセージ上に表示されましたね。

引数を2つ設定し、マクロへ受け渡す

次は引数の数を一つ増やし、2つの引数の値をマクロへ受け渡してみましょう。

ボタンを右クリックし、マクロの登録を選択します。

以下を入力します。

マクロ実行ボタン.xlsm!'メッセージを表示するマクロ_引数受け取り "マクロを実行する","3"'

サンプルコードに引数を追加します。

Sub メッセージを表示するマクロ_引数受け取り(strInfo As String, intNum As Integer)
    
    MsgBox strInfo & "ボタンからマクロを実行しました。値は" & intNum & "です。", vbInformation
    
End Sub

ボタンをクリックしてマクロを実行してみましょう。

はい、2つの引数の値がメッセージへ受け渡されていることが確認できましたね。

ボタン押下時にマクロ実行確認メッセージを表示

ボタン押下時にマクロ実行の確認メッセージを表示させ、「はい」の場合にマクロを実行するように追加してみましょう。

VBAの設定

サンプルコードは以下の通りです。

Sub メッセージを表示するマクロ_確認メッセージ付き(strInfo As String, intNum As Integer)
    
    If MsgBox("マクロを実行しますか?", vbYesNo) = vbYes Then
        
        '確認メッセージで「はい」を選択した場合のメッセージを表示させます。
        MsgBox strInfo & "ボタンからマクロを実行しました。値は" & intNum & "です。", vbInformation
    
    Else
        '確認メッセージで「いいえ」を選択した場合のメッセージを表示させます。
        MsgBox "マクロ実行をキャンセルしました。", vbInformation

    End If

End Sub

「はい」の場合、「vbYes」という値がメッセージから返りますので、この値があればマクロを実行するようにしています。

If MsgBox("マクロを実行しますか?", vbYesNo) = vbYes Then

ボタンの設定

ボタンを右クリックし、マクロの登録を選択します。

以下を入力します。

マクロ実行ボタン.xlsm!'メッセージを表示するマクロ_確認メッセージ付き "マクロを実行する","4"'

ボタンをクリックします。

確認メッセージが表示されたら「はい」をクリックします。

はい、マクロが実行されましたね。

「いいえ」も選択してみましょう。

はい、マクロは実行されませんね。

さいごに

いかがでしょうか。

今回は、

・Excelシートに配置したボタンにマクロを登録する方法
・引数付きでボタンにマクロを登録する方法
・ボタン押下後にマクロを実行するか確認する方法

についてまとめました。

また、他にも便利な方法がありますので、よろしければご参照頂ければと思います。



この記事の関連キーワード

こちらの記事の関連キーワード一覧です。クリックするとキーワードに関連する記事一覧が閲覧できます。



タカヒロ

タカヒロ
実質無料で読めるExcelVBA本についてまとめました。
もしVBA本購入を検討されていたら、どれだけお得か確かめてみてください。

【¥0】実質無料のExcelVBAおすすめ本25選!初級~中級まで網羅!

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です