イベント処理を行うイベントプロシージャを作成する
ユーザーフォームに設置したコマンドボタンなどがクリックされると Click イベントが発生します。発生したイベントに対するイベントプロシージャを作成しておくと、例えばボタンがクリックされたときに何らかの処理を実行することができます。ここでは Excel のユーザーフォームでイベント処理を行うイベントプロシージャを作成する方法について解説します。
(Last modified: )
イベントプロシージャを作成する
イベントはユーザーフォーム自身やユーザーフォームに設置したコントロールから発生します。発生するイベントの種類は対象のオブジェクトによって異なります。イベントに対する処理を記述するイベントプロシージャを作成する場合は、どのオブジェクトのどのイベントに対するものかを指定する必要があります。
それでは例として次のようにテキストボックスとコマンドボタンが 1 つずつ設置されたユーザーフォームでイベントプロシージャを作成してみます。
コマンドボタンに対するイベントプロシージャを作成するにはコマンドボタンをダブルクリックしてください。
コードウィンドウに次のようにイベントプロシージャが表示されます。
Private Sub CommandButton1_Click() End Sub
このイベントプロシージャのプロシージャ名は「オブジェクト名_イベント名」となっています。つまりこのイベントプロシージャは CommandButton1
オブジェクトの Click
イベントに対するものです。
先ほどのようにコントローラーをダブルクリックすると対象のオブジェクトに対するイベントプロシージャが一つも定義されていない場合、コントロール毎に設定されている既定のイベントに対するイベントプロシージャが表示されるようになっています。コマンドボタンの場合は Click
が既定のイベントのため Click
イベントに対するイベントプロシージャが表示されました。既に対象のオブジェクトに対するいずれかのイベントに対するイベントプロシージャが作成されていた場合は、そのイベントプロシージャが表示されます。
それでは先ほど表示されたイベントプロシージャで実行する処理として次のように記述してみました。
Private Sub CommandButton1_Click() MsgBox "ボタンがクリックされました" End Sub
これでコマンドボタンがクリックされたとき、ダイアログが表示されてメッセージが表示されます。
それでは実際に試してみます。「Sub/ユーザーフォームの実行」をクリックしてください。
ユーザーフォームが表示されたらコマンドボタンをクリックしてください。
コマンドボタンのイベントプロシージャで定義したダイアログが表示されてメッセージが表示されました。
このようにイベントプロシージャを作成することで、対象のオブジェクトに対する指定のイベントが発生したときに任意の処理を実行することができます。
オブジェクトやイベントの種類を変更する
先ほどイベントプロシージャを作成するためにコマンドボタンをダブルクリックしたところ、コマンドボタンの既定のイベントである Click
イベントに対するイベントプロシージャが表示されました。
同じコマンドボタンの別のイベントに対するイベントプロシージャを作成するには、コードウィンドウの画面右上にある次の個所をクリックしてください。
コマンドボタンで発生するイベントの一覧が表示されます。
例えばコマンドボタンでダブルクリックが行われたときに発生するイベントは DblClick
です。このイベントに対するイベントプロシージャを作成するには一覧の中の DblClick
をクリックしてください。
コマンドボタンの DblClick
イベントに対するイベントプロシージャが表示されました。 DblClick
イベントが発生したときに実行したい処理をこのイベントプロシージャの中に記述してください。
このように対象のイベントを変更してイベントプロシージャを作成することができます。
オブジェクトを変更する
また別のオブジェクトに対するイベントプロシージャを作成したい場合、ユーザーフォームに戻ってあらためてダブルクリックしてもいいですが、コードウィンドウの次の個所をクリックすると対象のオブジェクトを変更することができます。
選択可能なオブジェクトの一覧が表示されます。
例えばユーザーフォームに対するイベントプロシージャを作成したい場合は、ユーザーフォームのオブジェクト名である UserForm
をクリックしてください。
ユーザーフォームの既定のイベントである Click
イベントに対するイベントプロシージャが表示されました。
このように対象のオブジェクトを変更してイベントプロシージャを作成することができます。
イベントプロシージャを作成する別の方法
ここまでイベントプロシージャを作成する方法として対象のコントロールをダブルクリックして作成していましたが、それ以外の方法もご紹介しておきます。対象のコントロールをクリックして選択してください。
「表示」をクリックし、表示されたメニューの中の「コード」をクリックしてください。
イベントプロシージャが表示されました。今回はテキストボックスを選択せひていたので、テキストボックスの既定のイベントである Change
イベントに対するイベントプロシージャが表示されました。
または対象のコントロールの上で右クリックし、表示されたメニューの中から「コードを表示」をクリックしてもイベントプロシージャを表示することができます。
コントロールをダブルクリックする方法も含めていずれの方法でも同じ結果になりますので、使いやすい方法を選択されてください。
-- --
Excel のユーザーフォームでイベント処理を行うイベントプロシージャを作成する方法について解説しました。
( Written by Tatsuo Ikura )
著者 / TATSUO IKURA
プログラミングや開発環境構築の解説サイトを運営しています。