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

Excelマクロのユーザーフォームの基礎、エクセルVBAの入門解説
最終更新日: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




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

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


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

Variantの数値型と文字列型の比較|エクセル雑感(7月1日)
VBAのVariant型について|VBA技術解説(6月30日)
VBAのString型の最大文字数について|エクセル雑感(6月20日)
VBAで表やグラフをPowerPointへ貼り付ける|VBAサンプル集(6月19日)
アクティブシート以外の表示(Window)に関する設定|VBA技術解説(6月17日)
マクロ記録での色のマイナス数値について|エクセル雑感(6月16日)
ツイッター投稿用に文字数と特定文字で区切る|エクセル雑感(6月15日)
日付の謎:IsDateとCDate|エクセル雑感(6月14日)
IFステートメントの判定|エクセル雑感(6月13日)
インクリメンタルサーチの実装|ユーザーフォーム入門(6月12日)


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

1.最終行の取得(End,Rows.Count)|VBA入門
2.RangeとCellsの使い方|VBA入門
3.変数宣言のDimとデータ型|VBA入門
4.マクロって何?VBAって何?|VBA入門
5.セルのコピー&値の貼り付け(PasteSpecial)|VBA入門
6.Range以外の指定方法(Cells,Rows,Columns)|VBA入門
7.繰り返し処理(For Next)|VBA入門
8.セルに文字を入れるとは(Range,Value)|VBA入門
9.とにかく書いてみよう(Sub,End Sub)|VBA入門
10.マクロはどこに書くの(VBEの起動)|VBA入門




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


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



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