イベント処理

ボタンをクリックしたりリストの項目を変更したりといったコントロールに対して何か操作を行うと、操作に対するイベントが発生します。ここでは Excel のフォームでイベント処理を行う方法を解説します。

(2022 年 06 月 16 日公開 / 2022 年 06 月 16 日更新)

イベントプロシージャを記述する

イベントとはコントロールに何か操作を行った時に発生するもので、各操作に対してそれぞれイベントが用意されています。例えばフォームに配置されているボタンに対してクリックした時には「Click」イベントが発生します。

このイベントが発生した時に行いたい処理を記述するのがイベントプロシージャです。

実際の例を見ながら確認していきます。まずフォームを1つ作成し、テキストボックスとボタンを1つずつ配置します。

イベントプロシージャを記述する(1)

フォーム上のボタンをダブルクリックして下さい。するとイベントに関する処理を記述するイベントプロシージャが表示されます。

イベントプロシージャを記述する(2)

イベントプロシージャはマクロから呼び出されるプロシージャと同じSubプロシージャです。ただし記述される場所はモジュールのコードウィンドウではなく、フォームのコードウィンドウになります。先頭に「Private」が付いているのは、他のモジュールからは呼び出せずフォームが含まれているモジュール内でのみ利用可能であることを示しています。

Private Sub CommandButton1_Click()

End Sub

通常のSubプロシージャがマクロや他のプロシージャから呼ばれるのに対して、イベントプロシージャはイベントが発生した時に呼び出されます。上記の場合は「CommandButton1」と言うボタンにて「Click」と言うイベントが発生した場合に呼び出されます。この「CommandButton1」はボタンについているコントロールの名前(プロパティ上ではオブジェクト名)になります。(※『コントロールの名前を設定する』を参照して下さい)。

通常のプロシージャと同じく、イベントプロシージャの中にVBAのコードを記述することで、フォームのボタンがクリックされたら何かを行うというプログラムを記述することが出来ます。例えば次のように記述した場合、ボタンがクリックされたらセルA1に10と言う値を設定します。

Private Sub CommandButton1_Click()

    Dim range1 As Range

    Set range1 = Range("A1")
    range1.Value = 10

End Sub

イベントプロシージャを記述することによって、例えばシートに入力する値をフォームで入力してもらい、ボタンをクリックしたらシートに値を貼り付けるといった動作が可能になります。

イベントの種類

コントロールに対してどのようなイベントがあるのかはコントロール毎によって異なります。例としてボタンに対するイベントの種類を見てみます。

まずフォームに配置したボタンをダブルクリックしてボタンに対する「Click」イベントのプロシージャを表示して下さい。

イベントの種類(1)

上記図の赤い四角の箇所にあるコンボボックスをクリックして下さい。

イベントの種類(2)

ここに表示されている項目がボタンに対して発生するイベントです。「Click」のように良く使われるものもありますし、あまり使われないイベントもあります。

では試しにリストの中から「DblClick」を選択して下さい。

イベントの種類(3)

するとボタンに対してダブルクリックを行った時に発生する「DblClick」イベントに関するプロシージャが表示されます。

イベントの種類(4)

ダブルクリックの場合にはプロシージャに引数が設定されています。このようにイベントによってはイベント発生時にExcelから何か値が渡されてくる場合があります。

Private Sub CommandButton1_Click()

End Sub

Private Sub CommandButton1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)

End Sub

イベントの細かい使い方や、コントロール毎に用意されているイベントの詳細は各コントロールの詳細解説を参照して下さい。

-- --

Excel のフォームでイベント処理を行う方法を解説しました。

( Written by Tatsuo Ikura )

広告
Profile
profile_img

著者 / TATSUO IKURA

初心者~中級者の方を対象としたプログラミング方法や開発環境の構築の解説を行うサイトの運営を行っています。