イベント処理を行うイベントプロシージャを作成する

ユーザーフォームに設置したコマンドボタンなどがクリックされると Click イベントが発生します。発生したイベントに対するイベントプロシージャを作成しておくと、例えばボタンがクリックされたときに何らかの処理を実行することができます。ここでは Excel のユーザーフォームでイベント処理を行うイベントプロシージャを作成する方法について解説します。

(Last modified: )

イベントプロシージャを作成する

イベントはユーザーフォーム自身やユーザーフォームに設置したコントロールから発生します。発生するイベントの種類は対象のオブジェクトによって異なります。イベントに対する処理を記述するイベントプロシージャを作成する場合は、どのオブジェクトのどのイベントに対するものかを指定する必要があります。

それでは例として次のようにテキストボックスとコマンドボタンが 1 つずつ設置されたユーザーフォームでイベントプロシージャを作成してみます。

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

コマンドボタンに対するイベントプロシージャを作成するにはコマンドボタンをダブルクリックしてください。

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

コードウィンドウに次のようにイベントプロシージャが表示されます。

Private Sub CommandButton1_Click()

End Sub

イベントプロシージャを作成する(3)

このイベントプロシージャのプロシージャ名は「オブジェクト名_イベント名」となっています。つまりこのイベントプロシージャは CommandButton1 オブジェクトの Click イベントに対するものです。

先ほどのようにコントローラーをダブルクリックすると対象のオブジェクトに対するイベントプロシージャが一つも定義されていない場合、コントロール毎に設定されている既定のイベントに対するイベントプロシージャが表示されるようになっています。コマンドボタンの場合は Click が既定のイベントのため Click イベントに対するイベントプロシージャが表示されました。既に対象のオブジェクトに対するいずれかのイベントに対するイベントプロシージャが作成されていた場合は、そのイベントプロシージャが表示されます。

それでは先ほど表示されたイベントプロシージャで実行する処理として次のように記述してみました。

Private Sub CommandButton1_Click()
    MsgBox "ボタンがクリックされました"
End Sub

イベントプロシージャを作成する(4)

これでコマンドボタンがクリックされたとき、ダイアログが表示されてメッセージが表示されます。

それでは実際に試してみます。「Sub/ユーザーフォームの実行」をクリックしてください。

イベントプロシージャを作成する(5)

ユーザーフォームが表示されたらコマンドボタンをクリックしてください。

イベントプロシージャを作成する(6)

コマンドボタンのイベントプロシージャで定義したダイアログが表示されてメッセージが表示されました。

イベントプロシージャを作成する(7)

このようにイベントプロシージャを作成することで、対象のオブジェクトに対する指定のイベントが発生したときに任意の処理を実行することができます。

オブジェクトやイベントの種類を変更する

先ほどイベントプロシージャを作成するためにコマンドボタンをダブルクリックしたところ、コマンドボタンの既定のイベントである Click イベントに対するイベントプロシージャが表示されました。

オブジェクトやイベントの種類を変更する(1)

同じコマンドボタンの別のイベントに対するイベントプロシージャを作成するには、コードウィンドウの画面右上にある次の個所をクリックしてください。

オブジェクトやイベントの種類を変更する(2)

コマンドボタンで発生するイベントの一覧が表示されます。

オブジェクトやイベントの種類を変更する(3)

例えばコマンドボタンでダブルクリックが行われたときに発生するイベントは DblClick です。このイベントに対するイベントプロシージャを作成するには一覧の中の DblClick をクリックしてください。

オブジェクトやイベントの種類を変更する(4)

コマンドボタンの DblClick イベントに対するイベントプロシージャが表示されました。 DblClick イベントが発生したときに実行したい処理をこのイベントプロシージャの中に記述してください。

オブジェクトやイベントの種類を変更する(5)

このように対象のイベントを変更してイベントプロシージャを作成することができます。

オブジェクトを変更する

また別のオブジェクトに対するイベントプロシージャを作成したい場合、ユーザーフォームに戻ってあらためてダブルクリックしてもいいですが、コードウィンドウの次の個所をクリックすると対象のオブジェクトを変更することができます。

オブジェクトやイベントの種類を変更する(6)

選択可能なオブジェクトの一覧が表示されます。

オブジェクトやイベントの種類を変更する(7)

例えばユーザーフォームに対するイベントプロシージャを作成したい場合は、ユーザーフォームのオブジェクト名である UserForm をクリックしてください。

オブジェクトやイベントの種類を変更する(8)

ユーザーフォームの既定のイベントである Click イベントに対するイベントプロシージャが表示されました。

オブジェクトやイベントの種類を変更する(9)

このように対象のオブジェクトを変更してイベントプロシージャを作成することができます。

イベントプロシージャを作成する別の方法

ここまでイベントプロシージャを作成する方法として対象のコントロールをダブルクリックして作成していましたが、それ以外の方法もご紹介しておきます。対象のコントロールをクリックして選択してください。

イベントプロシージャを作成する別の方法(1)

「表示」をクリックし、表示されたメニューの中の「コード」をクリックしてください。

イベントプロシージャを作成する別の方法(2)

イベントプロシージャが表示されました。今回はテキストボックスを選択せひていたので、テキストボックスの既定のイベントである Change イベントに対するイベントプロシージャが表示されました。

イベントプロシージャを作成する別の方法(3)

または対象のコントロールの上で右クリックし、表示されたメニューの中から「コードを表示」をクリックしてもイベントプロシージャを表示することができます。

イベントプロシージャを作成する別の方法(4)

コントロールをダブルクリックする方法も含めていずれの方法でも同じ結果になりますので、使いやすい方法を選択されてください。

-- --

Excel のユーザーフォームでイベント処理を行うイベントプロシージャを作成する方法について解説しました。

( Written by Tatsuo Ikura )

プロフィール画像

著者 / TATSUO IKURA

これから IT 関連の知識を学ばれる方を対象に、色々な言語でのプログラミング方法や関連する技術、開発環境構築などに関する解説サイトを運営しています。