ExcelVBA

Excel VBAでボタンが押下されたときのイベント処理を実装してみた

Excel VBAでは、フォームコントロールまたはActiveX コントロールを利用して、ボタンを作成し、そのボタンにイベント処理を登録することができる。

今回は、Excel VBAでボタンが押下されたときのイベント処理を実装してみたので、その手順を共有する。

前提条件

下記記事の「VBAプログラムの作成と実行」が完了していること

Excel VBAを利用してみたExcel VBAを利用すると、Excelファイルを編集する定型的な業務を自動化することができ、他の言語の開発現場でも、Excel VB...



やってみたこと

  1. フォームコントロールボタンによるイベント処理
  2. ActiveX コントロールボタンによるイベント処理

フォームコントロールボタンによるイベント処理

フォームコントロールでボタンを作成し、そこにイベントを登録する手順は、以下の通り。

1) 保存した「SampleVBA.xlsm」を開き、「開発」タブを選択
フォームコントロール_1

2) 「挿入」メニューから「フォームコントロール」の「ボタン」を選択
フォームコントロール_2

3) 下方に「マウスをドラッグし、ボタンを作成します。」というメッセージが表示されるので、ボタンを作成したい箇所で、ドラッグ&ドロップする
フォームコントロール_3

4) ドラッグ&ドロップが終わると、以下のマクロの登録画面が表示されるので、登録したいマクロを選択し「OK」ボタンを押下
フォームコントロール_4

5) 以下のように、ボタンが作成されることが確認できる
フォームコントロール_5

6) 作成された「ボタン1」を押下すると、以下のように、「Hello World!!」が表示されることが確認できる
フォームコントロール_6

なお、「ボタン1」と紐付けたマクロの内容は以下の通りで、「Hello World!!」というダイアログを表示する内容となっている

7) 「ボタン1」の名前を変更するには、以下のように、「ボタン1」を選択し右クリックし、「テキストの編集」メニューを押下
フォームコントロール_7

8) 以下のように、テキスト「ボタン1」を選択し名前を変更後、カーソルを外すと、ボタン名が変更される
フォームコントロール_8_1

フォームコントロール_8_2 フォームコントロール_8_3

9) さらに、「vbaTest呼出」を選択し右クリックし、「コントロールの書式設定」メニューを押下すると、ボタンに表示されているフォントの書式を変更することもできる
フォームコントロール_9_1

フォームコントロール_9_2



ActiveX コントロールボタンによるイベント処理

ActiveXコントロールでボタンを作成し、そこにイベントを登録する手順は、以下の通り。
なお、ActiveX コントロールとフォームコントロールの違いについては、以下のサイトを参照のこと。
https://www.239-programing.com/excel-vba/basic/basic101.html

1) 「SampleVBA.xlsm」を開き、「開発」タブを選択した状態で、「挿入」メニューから「ActiveX コントロール」の「コマンドボタン」を選択
ActiveXコントロール_1

2) ドラッグ&ドロップすると、コマンドボタンが作成される
ActiveXコントロール_2

3) 作成した「CommandButton1」というボタンをダブルクリックすると、以下のように、VBAプログラムを編集する画面(Visual Basic Editor)が表示される
ActiveXコントロール_3

4) 以下のように、「CommandButton1が押されました」というメッセージを表示するコードを追記し、保存ボタンを押下
ActiveXコントロール_4

5) VBAプログラムを編集する画面(Visual Basic Editor)を閉じると以下の画面が表示されるので、「デザインモード」を押下
ActiveXコントロール_5

6) 「CommandButton1」ボタンを押下すると、以下のように、「CommandButton1が押されました」というメッセージが表示されることが確認できる
ActiveXコントロール_6

7) ボタン名を変更するには、「デザインモード」を選択後、「CommandButton1」を選択し右クリックし、「コマンドボタン オブジェクト」から「編集」メニューを押下
ActiveXコントロール_7

8) 以下のように、テキスト「CommandButton1」を選択し名前を変更後、カーソルを外すと、ボタン名が変更される
ActiveXコントロール_8_1

ActiveXコントロール_8_2 ActiveXコントロール_8_3

9) さらに、「デザインモード」が選択された状態で「コマンドボタン押下」を選択し右クリックし、「プロパティ」メニューを押下すると、ボタンやボタンに表示されているフォントの書式を変更するための画面が表示される
ActiveXコントロール_9_1

ActiveXコントロール_9_2

10) 例えばプロパティ画面で「BackColor」の色を変更すると、以下のように、ボタンの色を変更することができる
ActiveXコントロール_10_1

ActiveXコントロール_10_2 ActiveXコントロール_10_3

11) 「デザインモード」の選択を解除し、「コマンドボタン押下」ボタンを押下すると、以下のように、先ほどと同じメッセージが表示されることが確認できる
ActiveXコントロール_11

要点まとめ

  • Excel VBAのフォームコントロールまたはActiveX コントロールを利用すると、ボタンを作成し、そのボタンにイベント処理を登録することができる。