ユーザーフォーム入門
第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 ・・・新着記事一覧を見る

変数を考えることはロジックを考える事|エクセル雑感(2021-04-11)
RangeオブジェクトのFor EachとAreasについて|VBA技術解説(2021-04-08)
PropertyのSetはLetでも良い|VBA技術解説(2021-03-31)
エクセル麻雀ミニゲーム|VBAサンプル集(2021-03-09)
VBA100本ノック 100本目:WEBから100本ノックのリストを取得|VBA練習問題(2021-03-03)
VBA100本ノック 魔球編:2桁の最小公倍数|VBA練習問題(2021-02-02)
Select Caseでの短絡評価(ショートサーキット)の使い方|VBA技術解説(2021-01-03)
VBA100本ノック 迷宮編:巡回セル問題|VBA練習問題(2020-12-31)
VBA100本ノック 魔球編:閉領域の塗り潰し|VBA練習問題(2020-12-16)
VBA100本ノック 魔球編:組み合わせ問題|VBA練習問題(2020-12-02)


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

1.最終行の取得(End,Rows.Count)|VBA入門
2.Excelショートカットキー一覧|Excelリファレンス
3.RangeとCellsの使い方|VBA入門
4.マクロって何?VBAって何?|VBA入門
5.変数宣言のDimとデータ型|VBA入門
6.繰り返し処理(For Next)|VBA入門
7.ひらがな⇔カタカナの変換|エクセル基本操作
8.Range以外の指定方法(Cells,Rows,Columns)|VBA入門
9.セルのコピー&値の貼り付け(PasteSpecial)|VBA入門
10.セルに文字を入れるとは(Range,Value)|VBA入門




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


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



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