コントロール上でクリックしたときに発生するイベント(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
プログラミングや開発環境構築の解説サイトを運営しています。