Excel VBAでは、フォームコントロールまたはActiveX コントロールを利用して、ボタンを作成し、そのボタンにイベント処理を登録することができる。
今回は、Excel VBAでボタンが押下されたときのイベント処理を実装してみたので、その手順を共有する。
前提条件
下記記事の「VBAプログラムの作成と実行」が完了していること
やってみたこと
フォームコントロールボタンによるイベント処理
フォームコントロールでボタンを作成し、そこにイベントを登録する手順は、以下の通り。
1) 保存した「SampleVBA.xlsm」を開き、「開発」タブを選択
2) 「挿入」メニューから「フォームコントロール」の「ボタン」を選択
3) 下方に「マウスをドラッグし、ボタンを作成します。」というメッセージが表示されるので、ボタンを作成したい箇所で、ドラッグ&ドロップする
4) ドラッグ&ドロップが終わると、以下のマクロの登録画面が表示されるので、登録したいマクロを選択し「OK」ボタンを押下
6) 作成された「ボタン1」を押下すると、以下のように、「Hello World!!」が表示されることが確認できる
なお、「ボタン1」と紐付けたマクロの内容は以下の通りで、「Hello World!!」というダイアログを表示する内容となっている
1 2 3 | Sub vbaTest() MsgBox "Hello World!!" End Sub |
7) 「ボタン1」の名前を変更するには、以下のように、「ボタン1」を選択し右クリックし、「テキストの編集」メニューを押下
8) 以下のように、テキスト「ボタン1」を選択し名前を変更後、カーソルを外すと、ボタン名が変更される
9) さらに、「vbaTest呼出」を選択し右クリックし、「コントロールの書式設定」メニューを押下すると、ボタンに表示されているフォントの書式を変更することもできる
ActiveX コントロールボタンによるイベント処理
ActiveXコントロールでボタンを作成し、そこにイベントを登録する手順は、以下の通り。
なお、ActiveX コントロールとフォームコントロールの違いについては、以下のサイトを参照のこと。
https://www.239-programing.com/excel-vba/basic/basic101.html
1) 「SampleVBA.xlsm」を開き、「開発」タブを選択した状態で、「挿入」メニューから「ActiveX コントロール」の「コマンドボタン」を選択
3) 作成した「CommandButton1」というボタンをダブルクリックすると、以下のように、VBAプログラムを編集する画面(Visual Basic Editor)が表示される
4) 以下のように、「CommandButton1が押されました」というメッセージを表示するコードを追記し、保存ボタンを押下
5) VBAプログラムを編集する画面(Visual Basic Editor)を閉じると以下の画面が表示されるので、「デザインモード」を押下
6) 「CommandButton1」ボタンを押下すると、以下のように、「CommandButton1が押されました」というメッセージが表示されることが確認できる
7) ボタン名を変更するには、「デザインモード」を選択後、「CommandButton1」を選択し右クリックし、「コマンドボタン オブジェクト」から「編集」メニューを押下
8) 以下のように、テキスト「CommandButton1」を選択し名前を変更後、カーソルを外すと、ボタン名が変更される
9) さらに、「デザインモード」が選択された状態で「コマンドボタン押下」を選択し右クリックし、「プロパティ」メニューを押下すると、ボタンやボタンに表示されているフォントの書式を変更するための画面が表示される
10) 例えばプロパティ画面で「BackColor」の色を変更すると、以下のように、ボタンの色を変更することができる
11) 「デザインモード」の選択を解除し、「コマンドボタン押下」ボタンを押下すると、以下のように、先ほどと同じメッセージが表示されることが確認できる
要点まとめ
- Excel VBAのフォームコントロールまたはActiveX コントロールを利用すると、ボタンを作成し、そのボタンにイベント処理を登録することができる。