01-VBA

Excel VBA の イベント編(Part.3)「フォームコントロール」「ActiveX コントロール」| 現役エンジニア&プログラミングスクール講師

目標

VBAのイベントについて概要を理解する
「フォームコントロール」「ActiveX コントロール」の違いを確認する
「フォームコントロール」を理解して利用できる
「ActiveX コントロール」を理解して利用できる

VBAのイベント

VBAのイベントの概要

VBAのイベントとは


VBAのイベントとはプロシージャが動作するための「きっかけ」のことをいいます。これまで、この記事ではプロシージャを動かすのにVBEの実行ボタンを利用してきましたが、プロシージャのイベントはVBE内の実行ボタン以外にもExcelのシートに配置できる「フォームコントロール」「ActiveX コントロール」からの実行、オブジェクトを利用した「セルの値の変更時のイベント」「シートの選択時のイベント」「ブックを開いた時のイベント」(イベントプロシージャ)での実行など様々あります。この記事では「フォームコントロールボタン」や「ActiveX コントロールボタン」について触れています。

ActiveX コントロールを利用するときも「クリック」や「ダブルクリック」、「選択値の変更」などのイベントを指定します。

2つのコントロールの違い

2つのコントロールの違い

コントロールの位置を確認する

2つのコントロールの利用にはいずれも「開発」タブの「挿入」を展開して利用します。

「挿入」を選択すると「フォームコントロール」と「ActiveXコントロール」が表示されます。

2つのコントロールの違い

いずれのコントロールでも同様の操作を行うことができますが、「フォームコントロール」は、ワークシート内の値やフォームに入力された設定値を取得して、ワークシートへ返すという処理が簡単に行えるという特徴があります。VBAを扱いたいときは「マクロの登録」を利用します。「ActiveX コントロール」には専用のVBAのイベントが準備されます。設定もVBEを通して行うようになっています。具体的な違いを「リストボックス」と「チェックボタン」の機能を例に確認していきます。

「フォームコントロール」の概要と利用方法

「フォームコントロール」の概要

フォームコントロールは「ワークシート内での値の受け渡し」や「フォームに入力された値の利用」を容易に行える機能です。」VBAのプログラム(プロシージャ)を利用したい場合は「マクロの登録」を利用します。

「フォームコントロール」の「リストボックス」

例えば次のような表がワークシートにあったとします。この表の値をフォームコントロールのリストで取得してワークシートの任意のセルに返すといった操作を行ってみたいと思います。

コントロールの挿入から「フォームコントロール」の「リストボックス」を選択します。

ワークシート上で十字キーが表示されます。「+」ドラッグしてリストを作成します。

リスト内で右クリックをするとメニューが表示されます。フォームコントロールの特徴は設定時に「コントロールの書式設定」を扱うことです。

コントロールの書式設定を使ってリストボックスの設定を行います。コントロールの書式設定を選択するとダイアログボックスが表示されるのでメニュー内の「コントロール」を選択します。表示された入力ボックスに値を入力して「OK」をクリックすると設定が完了します。

「入力範囲」にワークシート内の商品項目部分(セルB4からB12)を選択します。
「リンクするセル」は選択された項目を表示するセルです。セルB14としています。
入力ができたら「OK」をクリックします。

リストボックスの中身が表示されます。

商品を選択すると「リンクするセル」で設定したセルB14にリストの番号が表示されます。

「フォームコントロール」への「マクロの登録」

フォームコントロールでは「マクロの登録」をすることでVBAのプログラムを利用することが可能になります。イベントは操作されたときとなります。

次のプロシージャをリストボックスに登録して実行結果を確認します。

実行結果

「フォームコントロール」の「チェックボックス」

フォームコントロールからチェックボックスを選択してリストボックスの時と同じように配置します。

配置後の表示は次のようになります。続けてコントロールの書式設定を設定します。

今回はリンクするセルにセルI3を設定しています。

チェックを入れたり外したりすることでセルI3のBoolean値が変化します。

「フォームコントロール」への「マクロの登録」

実行結果

「ActiveX コントロール」の概要と利用方法

「ActiveX コントロール」の概要

ActiveXコントロールは「ワークシート内での値をVBEのプロパティウィンドウやプロシージャを通して処理に利用する」ときに使用します。フォームコントロールでも同様の操作を「マクロの登録」で行うことが可能ですが、大きな違いは、ActiveXコントロールでは「様々なVBAのイベント」を利用できることです。「様々なVBAのイベント」には「クリック、ダブルクリック、値の変更」などがあります。

「ActiveX コントロール」の「リストボックス」

ActiveX コントロールでもワークシートへの設置はフォームコントロールと同じ操作で行えます。

ActiveX コントロールの編集には「デザインモード」を選択しておく必要があります。

「デザインモード」を選択した状態でないとActiveX コントロールの設定変更はできません。

まずは「プロパティ」を選択して「プロパティウィンドウ」を開きます。プロパティウィンドウが開いたら必要な個所を設定していきます。今回は値を返すセルの選択とリストとして取り込むセルの範囲を設定します。

設定ができたらデザインモードを解除してリストボックスを操作してみます。

ActiveX コントロールでもフォームコントロールと同様の操作を行うことができます。

「ActiveX コントロール」でのプロシージャの利用

ActiveX コントロールではフォームコントロールのマクロの登録と同じようにプロシージャを利用できます。違いとしてはプロシージャの実行に様々なイベントを利用できるという点があります。ここではイベントの設定を確認していきたいと思います。

再度「デザインモード」を選択した状態にしてリストボックスを右クリックし、「コードの表示」を選択します。

コードウィンドウが表示されます。コードウィンドウの左上のプルダウンメニューに「ListBox1」右上のプルダウンメニューに「Click」が設定されています。右上のメニューを変更すると新しいプロシージャが表示されます。

このプルダウンメニューは選択されるプロシージャが変わると切り替わります。これはプロシージャが個別で左上のオブジェクト専用であって、右上のイベントを利用することを意味しています。

選択しているプロシージャを変更するとオブジェクトやイベントが変更されることが確認できます。

プロシージャにプログラムを追記して操作をしてみます。

実行結果

リストの項目をダブルクリックするとイベントが起こりプロシージャが動作します。プロシージャ内に追記したプログラムが動いてMsgBoxが表示されました。

「ActiveX コントロール」の「チェックボックス」

続いて「ActiveX コントロール」の「チェックボックス」を利用していきます。「ActiveX コントロール」の「チェックボックス」を選択して配置します。

チェックボックスの配置が終わったらプロパティウィンドウからチェックボックスのオブジェクト名を確認しておきます。

ActiveX コントロールのチェックボックスで利用する値はプロパティウィンドウにある「Value」となります。プロシージャ内に追記するプログラムでは「オブジェクト名.プロパティ名」で値を取得します。今回の場合はCheckBox1.Valueで取得できます。

「ActiveX コントロール」のチェックボックスでプロシージャを利用

デザインモードを選択状態で「コードの表示」を選択します。コードウィンドウに表示されたプロシージャ内にキャプチャにある赤枠内のプログラムを追記します。

実行結果

今回は以上となります。

初心者も実践で通用!「VBA・VBS」おすすめ書籍5選 | 現役エンジニア&プログラミングスクール講師「VBA・VBS」初心者の方が実践業務の中でそれらを活用しt活躍できるために必要な知識を習得できる書籍を紹介しています。ページの下部には「おすすめのITスクール情報」「おすすめ求人サイト」について情報を掲載中。...

ブックマークのすすめ

「ほわほわぶろぐ」を常に検索するのが面倒だという方はブックマークをお勧めします。ブックマークの設定は別記事にて掲載しています。

「お気に入り」の登録・削除方法【Google Chrome / Microsoft Edge】| 現役エンジニア&プログラミングスクール講師「お気に入り」の登録・削除方法【Google Chrome / Microsoft Edge】について解説している記事です。削除方法も掲載しています。...
【パソコン選び】失敗しないための重要ポイント | 現役エンジニア&プログラミングスクール講師【パソコン選び】失敗しないための重要ポイントについての記事です。パソコンのタイプと購入時に検討すべき点・家電量販店で見かけるCPUの見方・購入者が必要とするメモリ容量・HDDとSSDについて・ディスプレイの種類・バッテリーの持ち時間や保証・Officeソフト・ウィルス対策ソフトについて書いています。...
RELATED POST
01-VBA

制御構文|Excel VBA (Part.9)【Do Loop】基本編 | 現役エンジニア&プログラミングスクール講師

2022年11月30日
プログラミング学習 おすすめ書籍情報発信 パソコン初心者 エンジニア希望者 新人エンジニア IT業界への就職・転職希望者 サポートサイト Programming learning Recommended schools Recommended books Information dissemination Computer beginners Prospective engineers New engineers Prospective job seekers in the IT industry Support site
01-VBA

ExcelVBAの「Worksheetsプロパティ」| 現役エンジニア&プログラミングスクール講師

2022年9月10日
プログラミング学習 おすすめ書籍情報発信 パソコン初心者 エンジニア希望者 新人エンジニア IT業界への就職・転職希望者 サポートサイト Programming learning Recommended schools Recommended books Information dissemination Computer beginners Prospective engineers New engineers Prospective job seekers in the IT industry Support site
01-VBA

インターフェースの利用方法|Excel VBA | 現役エンジニア&プログラミングスクール講師

2023年2月19日
プログラミング学習 おすすめ書籍情報発信 パソコン初心者 エンジニア希望者 新人エンジニア IT業界への就職・転職希望者 サポートサイト Programming learning Recommended schools Recommended books Information dissemination Computer beginners Prospective engineers New engineers Prospective job seekers in the IT industry Support site
01-VBA

Excel VBA の エラー処理(Part.1)| 現役エンジニア&プログラミングスクール講師

2022年12月26日
プログラミング学習 おすすめ書籍情報発信 パソコン初心者 エンジニア希望者 新人エンジニア IT業界への就職・転職希望者 サポートサイト Programming learning Recommended schools Recommended books Information dissemination Computer beginners Prospective engineers New engineers Prospective job seekers in the IT industry Support site
01-VBA

制御構文|Excel VBA (Part.3)【If Then】ネスト・論理演算子利用編 | 現役エンジニア&プログラミングスクール講師

2022年11月11日
プログラミング学習 おすすめ書籍情報発信 パソコン初心者 エンジニア希望者 新人エンジニア IT業界への就職・転職希望者 サポートサイト Programming learning Recommended schools Recommended books Information dissemination Computer beginners Prospective engineers New engineers Prospective job seekers in the IT industry Support site
01-VBA

印刷機能|Excel VBA (Part.1)【PageSetupプロパティ/PrintPreviewメソッド/PrintOutメソッド】編 | 現役エンジニア&プログラミングスクール講師

2022年12月5日
プログラミング学習 おすすめ書籍情報発信 パソコン初心者 エンジニア希望者 新人エンジニア IT業界への就職・転職希望者 サポートサイト Programming learning Recommended schools Recommended books Information dissemination Computer beginners Prospective engineers New engineers Prospective job seekers in the IT industry Support site