ユーザーフォーム入門
ユーザーフォームの各種イベント

Excelマクロのユーザーフォームの基礎、エクセルVBAの入門解説
公開日:2018-03-13 最終更新日:2019-12-17

第21回.ユーザーフォームの各種イベント


ユーザーフォーム入門として基礎から解説します。
ユーザーフォームに対する操作(アクション)で発生するイベントの一覧です、


ユーザーフォームそのものの制御をする場合は、このイベントを利用します。

ユーザーフォームのイベント一覧

イベント 構文 説明
Activate UserForm_Activate() Activate イベントは、オブジェクトがアクティブなウィンドウになったときに発生します。Deactivate イベントは、オブジェクトがアクティブなウィンドウではなくなったときに発生します。
AddControl UserForm_AddControl(ByVal Control As MSForms.Control) フォーム、 Frame 、または MultiPage の Page にコントロールが追加されたときに発生します。
BeforeDragOver UserForm_BeforeDragOver(ByVal Cancel As MSForms.ReturnBoolean, ByVal Control As MSForms.Control, ByVal Data As MSForms.DataObject, ByVal X As Single, ByVal Y As Single, ByVal State As MSForms.fmDragState, ByVal Effect As MSForms.ReturnEffect, ByVal Shift As Integer) ドラッグ アンド ドロップ操作の実行中に発生します。
BeforeDropOrPaste UserForm_BeforeDropOrPaste(ByVal Cancel As MSForms.ReturnBoolean, ByVal Control As MSForms.Control, ByVal Action As MSForms.fmAction, ByVal Data As MSForms.DataObject, ByVal X As Single, ByVal Y As Single, ByVal Effect As MSForms.ReturnEffect, ByVal Shift As Integer) ユーザーがオブジェクトにデータをドロップするか貼り付けようとすると発生します。
Click UserForm_Click() クリックされたときに発生します。
DblClick UserForm_DblClick(ByVal Cancel As MSForms.ReturnBoolean) DblClick イベントは、マウス ポインターをオブジェクトの上に置き、システムで設定されているダブルクリックの間隔内に、マウスの左ボタンを押してから離す動作を 2 回続けて行ったときに発生します。
Deactivate UserForm_Deactivate() フォームがフォーカスを失い、アクティブでなくなると発生します。
Error UserForm_Error(ByVal Number As Integer, ByVal Description As MSForms.ReturnString, ByVal SCode As Long, ByVal Source As String, ByVal HelpFile As String, ByVal HelpContext As Long, ByVal CancelDisplay As MSForms.ReturnBoolean) Error イベントは、フォームやレポートにフォーカスがあるときに、Access で実行時エラーが検出されたときに発生します。
Initialize UserForm_Initialize() UserForm が読み込まれた後で表示される前に発生します。
KeyDown UserForm_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer) ユーザーがキーを押すと発生します。
KeyPress UserForm_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger) ユーザーが ANSI キーを押すと発生します。
KeyUp UserForm_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer) ユーザーがキーを離すと発生します。
Layout UserForm_Layout() 子コントロールの位置を変更する必要があるときに発生します。
MouseDown UserForm_MouseDown(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single) ユーザーがマウス ボタンを押したときに発生します。
MouseMove UserForm_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single) ユーザーがマウスを動かしたときに発生します。
MouseUp UserForm_MouseUp(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single) ユーザーがマウス ボタンを離したときに発生します。
QueryClose UserForm_QueryClose(Cancel As Integer, CloseMode As Integer) UserForm が閉じる前に発生します。
RemoveControl UserForm_RemoveControl(ByVal Control As MSForms.Control) コントロールが コンテナーから削除されたときに発生します。
Resize UserForm_Resize() フォームを開いたとき、およびフォームのサイズが変更されるたびに、 Resizeイベントが発生します。
Scroll UserForm_Scroll(ByVal ActionX As MSForms.fmScrollAction, ByVal ActionY As MSForms.fmScrollAction, ByVal RequestDx As Single, ByVal RequestDy As Single, ByVal ActualDx As MSForms.ReturnSingle, ByVal ActualDy As MSForms.ReturnSingle) マウスまたはキーボードの操作でスクロール ボックスが移動したときに発生します。
Terminate UserForm_Terminate() オブジェクトを参照するすべての 変数が Nothing に設定されて、オブジェクトのインスタンスへの参照がメモリからすべて削除されるか、オブジェクトへの最後の参照が スコープ外になったときに発生します。
Zoom UserForm_Zoom(Percent As Integer) Zoom プロパティの値が変更されたときに発生します。

太字のイベントが良く使われるイベントになります。
それ以外は、特殊な機能を実装したい場合に限られます。

QueryCloseの引数

UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)

ユーザー フォームに未完了のタスクが含まれていないかどうかを確認するために使用されます。

引数 説明
cancel 整数型 (Integer) の値を指定します。
この引数をTrueに設定すると、読み込み済みのすべてのユーザー フォームで QueryClose イベントが停止され、
UserFormとアプリケーションを閉じられなくなります。
closemode QueryClose イベントの原因を示す値または定数です。

CloseModeの定数
定数 内容
vbFormControlMenu 0 ユーザー フォームのコントロール メニューの [閉じる] がクリックされました。
vbFormCode 1 コードから Unload ステートメントが起動されました。
vbAppWindows 2 現在の Microsoft Windows のオペレーティング環境セッションが終了しました。
vbAppTaskManager 3 Windows のタスク マネージャによって、アプリケーションが閉じられました。

イベントの発生順について

ユーザーフォームを表示する時
以下の順でイベントが発生します。

UserForm_Initialize

UserForm_Activate


ユーザーフォームを閉じる時
以下の順でイベントが発生します。

UserForm_QueryClose

UserForm_Terminate




同じテーマ「ユーザーフォーム入門」の記事

第18回.2段階のコンボボックス
第19回.数値専用のテキストボックス
第20回.テキストボックスの各種イベント
第21回.ユーザーフォームの各種イベント
第22回.コントロールの動的作成
第23回.イベントプロシージャーの共通化
第24回.イベントプロシージャーの共通化(Enter,Exit)
第25回.簡易音楽プレーヤーの作成
第26回.プログレスバーを自作する
第27回.インクリメンタルサーチの実装
第28回.テンキーのスクリーンキーボード作成


新着記事NEW ・・・新着記事一覧を見る

VBA10大躓きポイント(初心者が躓きやすいポイント)|VBA技術解説(2024-03-05)
テンキーのスクリーンキーボード作成|ユーザーフォーム入門(2024-02-26)
無効な前方参照か、コンパイルされていない種類への参照です。|エクセル雑感(2024-02-17)
初級脱出10問パック|VBA練習問題(2024-01-24)
累計を求める数式あれこれ|エクセル関数応用(2024-01-22)
複数の文字列を検索して置換するSUBSTITUTE|エクセル入門(2024-01-03)
いくつかの数式の計算中にリソース不足になりました。|エクセル雑感(2023-12-28)
VBAでクリップボードへ文字列を送信・取得する3つの方法|VBA技術解説(2023-12-07)
難しい数式とは何か?|エクセル雑感(2023-12-07)
スピらない スピル数式 スピらせる|エクセル雑感(2023-12-06)


アクセスランキング ・・・ ランキング一覧を見る

1.最終行の取得(End,Rows.Count)|VBA入門
2.RangeとCellsの使い方|VBA入門
3.セルのコピー&値の貼り付け(PasteSpecial)|VBA入門
4.繰り返し処理(For Next)|VBA入門
5.変数宣言のDimとデータ型|VBA入門
6.ブックを閉じる・保存(Close,Save,SaveAs)|VBA入門
7.並べ替え(Sort)|VBA入門
8.条件分岐(IF)|VBA入門
9.セルのクリア(Clear,ClearContents)|VBA入門
10.マクロとは?VBAとは?VBAでできること|VBA入門




このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。


記述には細心の注意をしたつもりですが、
間違いやご指摘がありましたら、「お問い合わせ」からお知らせいただけると幸いです。
掲載のVBAコードは動作を保証するものではなく、あくまでVBA学習のサンプルとして掲載しています。
掲載のVBAコードは自己責任でご使用ください。万一データ破損等の損害が発生しても責任は負いません。



このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。
本文下部へ