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!'メッセージを表示するマクロ_引数受け取り "マクロを実行する"'
ボタンから引数を受け渡しマクロを実行する
ボタンから引数を受け渡しマクロを実行してみましょう。
ボタンをクリックします。
はい、引数の値がメッセージ上に表示されましたね。
引数を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"'
ボタンをクリックします。
確認メッセージが表示されたら「はい」をクリックします。
はい、マクロが実行されましたね。
「いいえ」も選択してみましょう。
はい、マクロは実行されませんね。
さいごに
いかがでしょうか。
今回は、
・引数付きでボタンにマクロを登録する方法
・ボタン押下後にマクロを実行するか確認する方法
についてまとめました。
また、他にも便利な方法がありますので、よろしければご参照頂ければと思います。
コメントを残す