コントロール上でクリックしたときに発生するイベント(Clickイベント)
ユーザーフォームに設置したコントロール上でクリックされた時に発生するイベントが Click イベントです。コマンドボタンでクリックされたときや、リストボックスで項目を選択したときに発生します。ここでは Excel のユーザーフォームで Click イベントがどのようなときに発生するのかやイベントが発生したときに呼び出されるイベントプロシージャの記述方法について解説します。
(Last modified: )
ユーザーフォームにおけるClickイベントとは
ユーザーフォームにおける Click イベントがどのような時に発生するのか、また発生したときのイベントプロシージャの記述方法について解説します。
どのようなときにイベントが発生するのか
Click イベントはコントロールをマウスでクリックしたときに発生します。
・フォームやコントロールをクリックした
・コマンドボタンにフォーカスがあるときに Enter キーを押した
・コマンドボタン、チェックボックス、トグルボタンにフォーカルがあるときに Space キーを押した
・コントロールに設定されているアクセスキーを押した
・オプションボタンのいずれかの値をプログラムからTrueにした
・コンボボックス、リストボックスでいずれかの項目と完全に一致する値を選択した
※ アクセスキーについては「コントロールにアクセスキーを設定する(Acceleratorプロパティ)」を参照されてください。
Clickイベントのイベントプロシージャ
Click イベントに対するイベントプロシージャは次のような形式となっています。
Private Sub オブジェクト名_Click() End Sub
対象のコントロールをマウスでクリックされると Click イベントが発生し、 Click イベントに対するイベントプロシージャが呼び出されます。例えばコマンドボタンがクリックされた時に実行したい処理を Click イベントに対するイベントプロシージャ中に記述しておいてください。
それでは簡単なサンプルで試してみます。ユーザーフォームにラベル、コマンドボタン、チェックボックスをそれぞれ設置しました。
それぞれのコントロールに対する Click イベントに対するイベントプロシージャをコードウィンドウで次のように記述してください。
Option Explicit
Private Sub Label1_Click()
MsgBox "ラベルでClickイベントが発生しました"
End Sub
Private Sub CommandButton1_Click()
MsgBox "コマンドボタンでClickイベントが発生しました"
End Sub
Private Sub CheckBox1_Click()
MsgBox "チェックボックスでClickイベントが発生しました"
End Sub
またユーザーフォームが表示される前に発生する Initialize イベントに対するイベントプロシージャを作成し、その中でコマンドボタンに対するアクセスキーを設定しておきます。
Option Explicit
Private Sub UserForm_Initialize()
CommandButton1.Accelerator = "C"
End Sub
これでコードの記述は完了です。では実際に試してみます。「Sub/ユーザーフォームの実行」をクリックしてください。
ユーザーフォームが表示されました。
それぞれのコントロールをマウスでクリックすると、 Click イベントが発生し、それぞれのコントロールのイベントプロシージャが呼び出されてメッセージボックスが表示されます。
チェックボックスでは、選択するときにクリックしたときも、選択を解除するときにクリックしたときも、どちらも Click イベントが発生します。
コマンドボタンにフォーカスがある状態で Enter キー、または Space キーを押しても Click イベントが発生します。
コマンドボタンにはアクセスキーとして c が設定してあるので、 Alt キー+c キーを押しても Click イベントが発生します。
Click、MouseUp、MouseDownイベントの発生する順番
コントロールによっては Click イベントの他にマウスボタンが押されたときに発生する MouseDown イベントや、マウスボタンを離したときに発生する MouseUp イベントが発生するものがあります。
例えばコマンドボタンでマウスをクリックすると、 Click イベントだけでなく MouseDown イベントおよび MouseUp イベントも発生します。このような場合にどの順番にイベントが発生するのかを確認してみます。
ユーザーフォームにコマンドボタンを設置しました。
コマンドボタンに対する 3 つのイベントのイベントプロシージャをそれぞれ次のように記述しました。イベントが発生するとイミディエイトウィンドウにでイベントの種類を出力します。
Option Explicit
Private Sub CommandButton1_Click()
Debug.Print "Click"
End Sub
Private Sub CommandButton1_MouseDown(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
Debug.Print "Mouse Down"
End Sub
Private Sub CommandButton1_MouseUp(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
Debug.Print "Mouse Up"
End Sub
ユーザーフォームを表示したあと、コマンドボタンをクリックしてください。
イミディエイトウィンドウを確認すると、 MouseDown 、 MouseUp 、 Click の順番でイベントが発生することが確認できます。
-- --
Excel のユーザーフォームで Click イベントがどのようなときに発生するのかやイベントが発生したときに呼び出されるイベントプロシージャの記述方法について解説しました。
( Written by Tatsuo Ikura )
著者 / TATSUO IKURA
これから IT 関連の知識を学ばれる方を対象に、色々な言語でのプログラミング方法や関連する技術、開発環境構築などに関する解説サイトを運営しています。