コントロール上でクリックしたときに発生するイベント(Clickイベント)

ユーザーフォームに設置したコントロール上でクリックされた時に発生するイベントが Click イベントです。コマンドボタンでクリックされたときや、リストボックスで項目を選択したときに発生します。ここでは Excel のユーザーフォームで Click イベントがどのようなときに発生するのかやイベントが発生したときに呼び出されるイベントプロシージャの記述方法について解説します。

(Last modified: )

ユーザーフォームにおけるClickイベントとは

ユーザーフォームにおける Click イベントがどのような時に発生するのか、また発生したときのイベントプロシージャの記述方法について解説します。

どのようなときにイベントが発生するのか

Click イベントはコントロールをマウスでクリックしたときに発生します。

・フォームやコントロールをクリックした
・コマンドボタンにフォーカスがあるときに Enter キーを押した
・コマンドボタン、チェックボックス、トグルボタンにフォーカルがあるときに Space キーを押した
・コントロールに設定されているアクセスキーを押した
・オプションボタンのいずれかの値をプログラムからTrueにした
・コンボボックス、リストボックスでいずれかの項目と完全に一致する値を選択した

※ アクセスキーについては「コントロールにアクセスキーを設定する(Acceleratorプロパティ)」を参照されてください。

Clickイベントのイベントプロシージャ

Click イベントに対するイベントプロシージャは次のような形式となっています。

Private Sub オブジェクト名_Click()

End Sub

対象のコントロールをマウスでクリックされると Click イベントが発生し、 Click イベントに対するイベントプロシージャが呼び出されます。例えばコマンドボタンがクリックされた時に実行したい処理を Click イベントに対するイベントプロシージャ中に記述しておいてください。

サンプルコード

それでは簡単なサンプルで試してみます。ユーザーフォームにラベル、コマンドボタン、チェックボックスをそれぞれ設置しました。

ユーザーフォームにおけるClickイベントとは(1)

それぞれのコントロールに対する 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

ユーザーフォームにおけるClickイベントとは(2)

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

ユーザーフォームにおけるClickイベントとは(3)

ユーザーフォームが表示されました。

ユーザーフォームにおけるClickイベントとは(4)

それぞれのコントロールをマウスでクリックすると、 Click イベントが発生し、それぞれのコントロールのイベントプロシージャが呼び出されてメッセージボックスが表示されます。

ユーザーフォームにおけるClickイベントとは(5)

ユーザーフォームにおけるClickイベントとは(6)

チェックボックスでは、選択するときにクリックしたときも、選択を解除するときにクリックしたときも、どちらも Click イベントが発生します。

ユーザーフォームにおけるClickイベントとは(7)

ユーザーフォームにおけるClickイベントとは(8)

コマンドボタンにフォーカスがある状態で Enter キー、または Space キーを押しても Click イベントが発生します。

ユーザーフォームにおけるClickイベントとは(9)

ユーザーフォームにおけるClickイベントとは(10)

コマンドボタンにはアクセスキーとして c が設定してあるので、 Alt キー+c キーを押しても Click イベントが発生します。

ユーザーフォームにおけるClickイベントとは(11)

Click、MouseUp、MouseDownイベントの発生する順番

コントロールによっては Click イベントの他にマウスボタンが押されたときに発生する MouseDown イベントや、マウスボタンを離したときに発生する MouseUp イベントが発生するものがあります。

例えばコマンドボタンでマウスをクリックすると、 Click イベントだけでなく MouseDown イベントおよび MouseUp イベントも発生します。このような場合にどの順番にイベントが発生するのかを確認してみます。

ユーザーフォームにコマンドボタンを設置しました。

Click、MouseUp、MouseDownイベントの発生する順番(1)

コマンドボタンに対する 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

Click、MouseUp、MouseDownイベントの発生する順番(2)

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

Click、MouseUp、MouseDownイベントの発生する順番(3)

イミディエイトウィンドウを確認すると、 MouseDownMouseUpClick の順番でイベントが発生することが確認できます。

Click、MouseUp、MouseDownイベントの発生する順番(4)

-- --

Excel のユーザーフォームで Click イベントがどのようなときに発生するのかやイベントが発生したときに呼び出されるイベントプロシージャの記述方法について解説しました。

( Written by Tatsuo Ikura )

Profile
profile_img

著者 / TATSUO IKURA

プログラミングや開発環境構築の解説サイトを運営しています。