Excelユーザーフォーム入門 | 第20回.テキストボックスの各種イベント | Excelマクロのユーザーフォームの基礎、エクセルVBAの入門解説



最終更新日:2017-04-09

第20回.テキストボックスの各種イベント


ユーザーフォームで最も良く使われる、テキストボックスのイベントの一覧と、

キー入力と、コントロール間の移動時のイベント発生順について記載します。

ユーザーの操作に応じて自動処理するためには、
その操作により発生するイベントと、その発生順序を理解しておくことが必要です。



テキストボックスのイベント一覧

以下の構文では、テキストボックスのオブジェクト名が、TextBox1 として記載しています。

イベント 構文 説明
AfterUpdate Private Sub TextBox1_AfterUpdate() コントロールのデータがユーザー インターフェイスを介して変更された後に発生します。
BeforeDragOver Private Sub TextBox1_BeforeDragOver(ByVal Cancel As MSForms.ReturnBoolean, ByVal Data As MSForms.DataObject, ByVal X As Single, ByVal Y As Single, ByVal DragState As MSForms.fmDragState, ByVal Effect As MSForms.ReturnEffect, ByVal Shift As Integer) ドラッグ アンド ドロップ操作の実行中に発生します。
BeforeDropOrPaste Private Sub TextBox1_BeforeDropOrPaste(ByVal Cancel As MSForms.ReturnBoolean, 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) ユーザーがオブジェクトにデータをドロップするか貼り付けようとすると発生します。
BeforeUpdate Private Sub TextBox1_BeforeUpdate(ByVal Cancel As MSForms.ReturnBoolean) コントロールのデータが変更される前に発生します。
Change Private Sub TextBox1_Change() Value プロパティが変更されたときに発生します。
DblClick Private Sub TextBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean) ユーザーがオブジェクトをポイントし、マウス ボタンを 2 回クリックすると発生します。
DropButtonClick Private Sub TextBox1_DropButtonClick() ドロップダウン リストが表示または非表示になると常に発生します。
Enter Private Sub TextBox1_Enter() コントロールが、同じフォームの他のコントロールから実際にフォーカスを受け取る前に発生します。
Error Private Sub TextBox1_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) コントロールがエラーを検出し、エラー情報を呼び出し元プログラムに返すことができないときに発生します。
Exit Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean) コントロールがフォーカスを失い、そのフォーカスが同じフォームにある他のコントロールに移動する直前に発生します。
KeyDown Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer) ユーザーがキーを押すと発生します。
KeyPress Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger) ユーザーが ANSI キーを押すと発生します。
KeyUp Private Sub TextBox1_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer) ユーザーがキーを離すと発生します。
MouseDown Private Sub TextBox1_MouseDown(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single) ユーザーがマウス ボタンを押したときに発生します。
MouseMove Private Sub TextBox1_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single) ユーザーがマウスを動かしたときに発生します。
MouseUp Private Sub TextBox1_MouseUp(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single) ユーザーがマウス ボタンを離したときに発生します。


構文を掲載していますが、
実際にプロシージャーの作成では、以下のイベント選択で自動挿入して作成します。



左のボックスでオブジェクトを選択し、
右のボックスでイベントを選択します。
イベントを選択すると、対応するイベントプロシージャーが自動挿入されます。
オブジェクトを選択しただけで、Changeイベントが作成されてしまいますが、使わない時はChangeのプロシージャーは削除してください。


イベントの発生順序

以下は、テキストボックスを選択し、文字を入力した後にEnterを押した場合のイベント発生順です。

Enter ・・・ テキストボックスを選択
以下、キー入力回数分繰り返される。
  KeyDown ・・・ 1文字目入力
  KeyPress
  Change
  KeyUp
  KeyDown ・・・ 2文字目入力
  KeyPress
  Change
  KeyUp
  KeyDown ・・・ 3文字目入力
  KeyPress
  Change
  KeyUp
  KeyDown
  ・・・
KeyDown ・・・ Enterキー押下
BeforeUpdate
AfterUpdate
Exit ・・・ テキストボックスを離れる
Enter ・・・ 移動先のコントロールのEnter


KeyDown と KeyPress の違いについて

イベントが発生する条件が、KeyDown と KeyPress では異なります。

KeyDown
全てのキーでイベントが発生します。
引数で受け取るものは、KeyCode です。

KeyPress
英数字などアスキーコードのみで発生します。
Enterキー、Shiftキー、Functionキー等の制御文字の入力では発生しません。
引数で受け取るものは、KeyAscii です。

つまり、通常の文字のみ判定するなら、KeyPressで良いが、
その他の制御キーも判定する場合は、KeyDownを使います。


イベントを自在に制御するには、それなりの経験が必要になりますが、
使えるイベントを一つずつ増やしていくようにして下さい。




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

第1回.ユーザーフォームを挿入
第2回.フォームのプロパティ
第3回.コントロールの追加(コマンドボタン)
第4回.コントロールの位置・サイズ調整
第5回.ラベルの追加
第6回.テキストボックス(TextBox)の追加
第7回.テキストボックス(TextBox)の値をセルへ

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

SUMIFの間違いによるパフォーマンスの低下について|エクセル関数超技(6月17日)
条件式のいろいろな書き方:TrueとFalseの判定とは|ExcelマクロVBA技術解説(6月15日)
空白セルを正しく判定する方法2|ExcelマクロVBA技術解説(5月6日)
フルパスをディレクトリ、ファイル名、拡張子に分ける|ExcelマクロVBA技術解説(4月15日)
テキストボックスの各種イベント|Excelユーザーフォーム入門(4月9日)
フォルダ(サブフォルダも全て)削除する、Optionでファイルのみ削除|ExcelマクロVBAサンプル集(4月4日)
最後の空白(や指定文字)以降の文字を取り出す|エクセル関数超技(3月26日)
先頭の数値、最後の数値を取り出す|エクセル関数超技(3月26日)
Excelファイルを開かずにシート名をチェック|ExcelマクロVBAサンプル集(3月23日)
数式の参照しているセルを取得する|ExcelマクロVBAサンプル集(3月18日)

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

1.最終行の取得(End,Rows.Count)|ExcelマクロVBA入門
2.RangeとCellsの使い方|ExcelマクロVBA入門
3.Range以外の指定方法(Cells,Rows,Columns)|ExcelマクロVBA入門
4.徹底解説(VLOOKUP,MATCH,INDEX,OFFSET)|エクセル関数超技
5.変数とデータ型(Dim)|ExcelマクロVBA入門
6.セルのコピー&値の貼り付け(PasteSpecial)|ExcelマクロVBA入門
7.定数と型宣言文字(Const)|ExcelマクロVBA入門
8.ひらがな⇔カタカナの変換|エクセル基本操作
9.セルの参照範囲を可変にする(OFFSET,COUNTA,MATCH)|エクセル関数超技
10.CSVの読み込み方法|ExcelマクロVBAサンプル集



  • >
  • >
  • >
  • テキストボックスの各種イベント

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


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

    ↑ PAGE TOP