Excel VBA ユーザーフォームのリストボックスのイベント一覧と使い方

コントロール作成/操作

ユーザーフォームのリストボックスのイベント一覧と使い方についてご説明します。

リストとなる文字列を表示する場合に使用し、選択した文字列を取得もできます。

表示されたリストは、設定次第で1つから複数まで選択可能です。

処理の条件となる文字列をリストから選択してもらう事で、取得する文字列を制御する時に使用すると非常に便利です。

リストボックス自体は単体でもコントロールとして十分に活用できますが、イベントと組み合わせる事でより複雑な処理も可能となります。

リストボックスの追加や、リストの追加方法については下記記事をご覧ください。

1.リストボックスのイベント一覧

リストボックスのイベント一覧と説明です。

下記イベントの中から実行のトリガー(きっかけ)となるイベントを選んで、その選択したらイベントプロシージャ内に、実行したい処理を記述します。

リストボックスのイベント一覧

赤字のイベントは下記「イベントの引数と定数一覧」に説明があります。

イベント名説明
AfterUpdateリストボックスのデータが更新された直後に実行されます。
BeforeDragOverドラッグ&ドロップの操作中に実行されます。
BeforeDropOrPasteリストボックスにデータをドロップもしくは、
貼り付けるときに実行されます。
BeforeUpdateリストボックスのデータが更新される直前に実行されます。
ChangeリストボックスのValueプロパティが変更されたら実行されます。
Clickリストボックスのリストをクリックしたら実行されます。
DblClickリストボックスをダブルクリックしたら実行されます。
Enterリストボックスが同じフォームの別コントロールからフォーカスを受け取る前に実行されます。
Errorリストボックスがエラーを呼び出し元プログラムに返すことができないときに実行されます。
Exitリストボックスがフォーカスを失い同じフォームの別コントロールに
移動する前に実行されます。
KeyDownキーを押すと実行されます。
KeyPressANSI を押すと実行されます。
KeyUp押したキーが離されたときに実行されます。
MouseDownリストボックス上でマウスボタンがクリックされたときに実行されます。
MouseMoveリストボックス上にマウスポインターが移動したときに実行されます。
MouseUpリストボックス上でマウスボタンを離したときに実行されます。

イベントの引数と定数一覧

引数のあるイベントの引数と定数の説明です。

BeforeDragOverの引数と定数

引数名説明
Cancelイベントのステータスを指定します。
Falseは、コントロールがイベントを処理することを示します(既定)。
Trueは、アプリケーションがイベントを処理することを示します。
Dataドラッグ&ドロップ操作でドラッグされたデータを返します。
Xコントロールの水平位置をポイント単位で返します。
Yコントロールの垂直位置をポイント単位で返します。
DragStateドラッグされているデータの遷移状態を返します。
Effectドロップソースでサポートされる操作を指定します。
ShiftShiftキー、Ctrlキー、およびAltキーの状態を指定します。
DragStateの定数一覧
定数名説明
fmDragStateEnter0マウスポインターはターゲットの範囲の中にあります。
fmDragStateLeave1マウスポインターはターゲットの範囲の外にあります。
fmDragStateOver2マウスポインターは新しい位置にありますが、
同じターゲットの範囲の中にあります。
Effectの定数一覧
定数名説明
fmDropEffectNone0ドロップソースをドロップターゲットにコピーも移動もしません。
fmdropeffectcopy1ドロップソースをドロップターゲットにコピーします。
fmdropeffectmove2ドロップソースをドロップターゲットに移動します。
fmDropEffectCopyOrMove3ドロップソースをドロップターゲットにコピーまたは移動します。
Shiftの定数一覧
定数名説明
fmShiftMask1Shiftキーが押されました。
fmCtrlMask2Ctrlキーが押されました。
fmaltMask4Altキーが押されました。

BeforeDropOrPasteの引数と定数

引数名説明
Cancelイベントのステータスを指定します。
Falseは、コントロールがイベントを処理することを示します(既定)。
Trueは、アプリケーションがイベントを処理することを示します。
Action現在のキーボード設定に基づく、保留中のドラッグアンドドロップ操作の結果を示します。
Dataドラッグ&ドロップ操作でドラッグされたデータを返します。
Xコントロールの水平位置をポイント単位で返します。
Yコントロールの垂直位置をポイント単位で返します。
Effectドロップソースでサポートされる操作を指定します。
ShiftShiftキー、Ctrlキー、およびAltキーの状態を指定します。
Actionの定数一覧
定数名説明
fmActionPaste2選択されているオブジェクトをドロップターゲットに貼り付けます。
fmActionDragDrop3ユーザーがオブジェクトをソースからドロップターゲットにドラッグして、
ドロップターゲットにドロップしたことを示します。
Effectの定数一覧
定数名説明
fmDropEffectNone0ドロップソースをドロップターゲットにコピーも移動もしません。
fmdropeffectcopy1ドロップソースをドロップターゲットにコピーします。
fmdropeffectmove2ドロップソースをドロップターゲットに移動します。
fmDropEffectCopyOrMove3ドロップソースをドロップターゲットにコピーまたは移動します。
Shiftの定数一覧
定数名説明
fmShiftMask1Shiftキーが押されました。
fmCtrlMask2Ctrlキーが押されました。
fmaltMask4Altキーが押されました。

BeforeUpdateの引数

引数名説明
Cancelイベントのステータスを指定します。
Falseは、コントロールがイベントを処理することを示します(既定)。
Trueは、アプリケーションがイベントを処理することを示します。

DblClickの引数

引数名説明
Cancelイベントのステータスを指定します。
Falseは、コントロールがイベントを処理することを示します(既定)。
Trueは、アプリケーションがイベントを処理することを示します。

Errorの引数

引数名説明
Numberコントロールがエラーの識別に使用する一意の値を指定します。
Descriptionエラーの説明です。
SCodeエラーのOLEステータスコードを指定します。
Sourceイベントを開始したコントロールを識別する文字列。
HelpFileエラーを説明しているヘルプファイルの完全修飾パス名を指定します。
HelpContextエラーの説明が含まれるヘルプファイルトピックのコンテキストIDを指定します。
CancelDisplayメッセージボックスにエラー文字列を表示するかどうかを指定します。

Exitの引数

引数名説明
Cancelイベントのステータスを指定します。
Falseは、コントロールがイベントを処理することを示します(既定)。
Trueは、アプリケーションがイベントを処理することを示します。

KeyDownの引数と定数

引数名説明
KeyCodeコントロールがフォーカスされた状態で押されたキーを返します。
ShiftShiftキー、Ctrlキー、およびAltキーの状態を返します。
Shiftの定数一覧
定数名説明
fmShiftMask1Shiftキーが押されました。
fmCtrlMask2Ctrlキーが押されました。
fmaltMask4Altキーが押されました。

KeyPressの引数

引数名説明
KeyAscii数値で表されるANSIキーコードを返します。
引数KeyAsciiに0を設定すると、キーストロークがキャンセルされ、
オブジェクトはキーが押されたことを認識しません。

KeyUpの引数と定数

引数名説明
KeyCodeコントロールがフォーカスされた状態で押されたキーを返します。
ShiftShiftキー、Ctrlキー、およびAltキーの状態を返します。
Shiftの定数一覧
定数名説明
fmShiftMask1Shiftキーが押されました。
fmCtrlMask2Ctrlキーが押されました。
fmaltMask4Altキーが押されました。

MouseDownの引数

引数名説明
Buttonマウスの押されたボタンを整数で返します。
1:左ボタン
2:右ボタン
3:中央ボタン
Shiftマウスが押されたときに一緒にShiftキー、Ctrlキー、Altキーが押された場合は整数で返します。
0:押されていない
1:Shiftキー
2:Ctrlキー
4:Altキー
Xマウスの水平位置をポイント単位で返します。
Yマウスの垂直位置をポイント単位で返します。

MouseMoveの引数

引数説明
Buttonマウスの押されたボタンを整数で返します。
1:左ボタン
2:右ボタン
3:中央ボタン
Shiftマウスが押されたときに一緒にShiftキー、Ctrlキー、Altキーが押された場合は整数で返します。
0:押されていない
1:Shiftキー
2:Ctrlキー
4:Altキー
Xマウスの水平位置をポイント単位で返します。
Yマウスの垂直位置をポイント単位で返します。

MouseUpの引数

引数名説明
Buttonマウスの押されたボタンを整数で返します。
1:左ボタン
2:右ボタン
3:中央ボタン
Shiftマウスが押されたときに一緒にShiftキー、Ctrlキー、Altキーが押された場合は整数で返します。
0:押されていない
1:Shiftキー
2:Ctrlキー
4:Altキー
Xマウスの水平位置をポイント単位で返します。
Yマウスの垂直位置をポイント単位で返します。

2.イベントの作成方法

コードを記述する場所

イベントの処理を記述するモジュールは対象のコントロールが設置されている「フォームモジュール」になります。

そして、イベントの書かれたプロシージャを「イベントプロシージャ」と言います。

作成したユーザーフォーム1つ1つにフォームモジュールがあり、イベント処理を組み込みたいコントロールのあるユーザーフォームのフォームモジュールに記述します。

詳細な処理コードは標準モジュールなどに記述しても問題ありませんが、トリガーが発生して実行されるのはあくまでイベントプロシージャ内の処理なので、他で書かれた内容を呼び出す必要があります。

フォームモジュールの開き方

次はフォームモジュールの表示方法です。

フォームモジュールは作成したユーザーフォームごとに分かれています。

イベントを記述したいユーザーフォームを選択して、開きますが開く方法はいくつかあります。

VBAProject内のユーザーフォームを右クリックしてメニューを開き「コードの表示」を選択する。

対象のコントロールをWクリックもしくは、「コードの表示」で開く事も出来ます。

イベントを選択する方法

記述場所の次はイベントの選択方法です。

イベントを選択するのも「フォームモジュール」になります。

コントロールをWクリック、もしくはコードの表示で開くと、次のように「ListBox1」の「Click」イベントが自動的に生成されます。

もしClickイベントではなく、他のイベントを選択したい場合は、「Click」部分のリストを表示して別のイベントを選択します。

イベントプロシージャ名

イベントを選択すると、イベントプロシージャ名は自動的に生成されます。

その中に処理をしたいコードを記述します。

各イベントが実行される挙動はイベントの種類の一覧をご覧ください。

タイトルとURLをコピーしました