タブオーダーとコントロールショートカット、テキストボックスのイベント 04回

テキストボックスのイベント,タブオーダーとコントロールショートカット

ユーザーフォーム講座 動画編 04回
タブオーダーとコントロールショートカット、テキストボックスのイベント

動画でExcel タブオーダーとコントロールショートカット、テキストボックスのイベント

【VBAユーザーフォーム】えっ、知らなかったの?タブオーダーとコントロールショートカット、テキストボックスのイベント 基礎編第4回 マクロ講座中級編(7/9)

動画版「ユーザーフォーム講座」です。
今回はテキストボックスのイベントについて説明します。
テキストボックスのイベントを使ってどんなことができるか、具体的な例を紹介していく予定です。
VBAのユーザーフォームには様々なコントロールがあり、 テキストボックスもその一つなのですが、テキストボックスはユーザーから直接テキスト情報を取得するために使用されています。 その為、テキストボックスにはとても重要なイベントがあります。
その中で3つ挙げるとしたらチェンジイベント、
それからエンターイベント、
そしてエグゼットイベント
この3つが代表的だと思います。

マクロ動画 タブオーダーとコントロールショートカット、テキストボックスのイベント

https://youtu.be/ORfwv3yZaR0

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

テキストボックスはユーザーから直接テキスト情報を取得するために使用されています。 また、データベース上のデータを表示したりもします。その為テキストボックスにはとても重要なイベントが用意されています。

NAMAE1

テキストボックスのイベントは、種類が多いですが、その中で3つ挙げるとしたら 、チェンジイベント、 それからエンターイベント そしてエグゼットイベント、 この3つが代表的だと思います。

NAMAE2

Enterイベントというのは、テキストボックスにフォーカスが当たったら何をするか、という そういったイベントです。

NAMAE3

またExitイベントというのは、テキストボックスからフォーカスが外れた時に発生するイベントです。 このイベント、Exitイベントには引数が存在しますが Enterイベントには引数はありません

NAMAE4

そしてもう一つCnengeイベントです。 チェンジイベントはテキストボックスにテキストが入力または変更された時に発生します。 ユーザーがテキストボックスに入力を始めた時に何かをするとかですね。 入力の内容が変わる度に何かをするというような形です。

NAMAE5

テキストボックスのイベントをコードで書いてみる

今チェンジイベントやエンターイベントを設定したのが、このユーザーフォームです。 左側のプロパティウィンドウにはFormのプロパティが表示されていますが UserFormのプロパティに、オブジェクト名『frm_読書感想』という、オブジェクト名がついています。

NAMAE6

まず最初の本のタイトルを入力というこちらのテキストボックス。
オブジェクト名はtext_booktitleというオブジェクト名がついています。
どのようなコードかというと、
このtext_booktitle_Change() というチェンジイベントを使ったのです。
ActiveCell.Value = text_booktitle.Value 
というコードにしたので、 アクティブなセルに入力するそばから、確定した順に入っていくという形でした

Private Sub text_booktitle_Change()
     ActiveCell.Value = text_booktitle.Value
End Sub
NAMAE7

次にこの感想欄ですね。
こちらのこのテキストボックスは、こちらは txt_感想 となっています。
こちらは、どんなコードを書いたかというと
Private Sub text_booktitle_Change()
これは、txt_感想というオブジェクトに、 これのEnterイベントを使ったプロシージャーを作ったのです。
これをこのWith txt_感想というものに対して 背景色を設定しています。
ブルーの色3原色で設定したので、 Enterつまりフォーカスが当たると中の色がちょっと紫系の色に変わったわけですね。

Private Sub txt_感想_Enter()
     With txt_感想
     .BackColor = RGB(204, 166, 191)
     End With
End Sub
NAMAE8

今度もう一つ、Exitですね。
Private Sub txt_感想_Exit
Exitイベントが起きたとき、つまりフォーカスが外れたら、背景色を変更するというコードです。
(ByVal Cancel As MSForms.ReturnBoolean)という引数が自動的に入ってますが、 まあこれ、今回は全然関係ないんですが入ることになっていますので、記述されています。
こちら With txt_感想 に対してフォーカスが外れたときに 背景色をRGB(254, 243, 243) にしろという指定です。
色は、薄ピンクのような色を設定したんですが、 もしかしたら白く見えちゃったかもしれないぐらいの薄ピンクでした。

Private Sub txt_感想_Exit(ByVal Cancel As MSForms.ReturnBoolean)
With txt_感想
     .BackColor = RGB(254, 243, 243)
End With
End Sub
NAMAE9

というような形で、3つのイベントをこの一つのフォームで実行してみました。
最初の例ですので、単純でしたから、あまり実用的じゃないイベントだったわけですが、 イベントの種類は豊富なので、これをどのように使うかというのは使うユーザー次第ということになりますね


ユーザーフォームを設計する際に大事な考え方

続いてユーザーフォームを設計する際に大事な考え方 フォーカスとタブオーダーについて説明します。

フォーカスとタブオーダー

フォーカスはユーザーフォームの中で、現在アクティブなコントロールを示しています。
キーボードからの入力、例えばテキストを入力したり。エンターキーを押したりなどという操作、 これは現在フォーカスを持っているコントロールに対して行われます。

NAMAE11

そしてタブオーダーというのはタブキーを押してコントロールを移動する順序のことですが フォーム内のコントロール間で、タブキーを押して移動する場合、その順序はタブオーダーによって決定されます。

NAMAE11

コントロールのプロパティを見ると、どのコントロールにもTabIndexという欄があって、 そこに番号が自動的に振られています。
この番号はコントロールを作成した順についています。タブオーダーはTabIndex順移動します。 当然コントロールの配置は変更されることもあるでしょう。そうすると、順序どおりに作成されていない場合もあり、 自動的に作成されたTabIndexでは困ることも出てきます。
この順序でタブキーが移動してくれた方が便利なのになぁというようなケースがおこりますから、それは ユーザーが利用する前に事前に変更することが可能です。

NAMAE12

Accelerator

これが実は本日一番の目玉なんです。 このアクセラレータプロパティというのはコントロールにショートカットキーを設定するプロパティです。
タブオーダーで順番にコントロールを移動できても、特定のコントロールに戻るために、またぐるーっと一周では面倒くさいです。 そんな時にAcceleratorで設定したショートカットを使うことができます。
Acceleratorを使うには、プロパティに使いたい英文字を入力します。

NAMAE13

社員IDのラベルには『I』IDの意味です。

NAMAE14

住所のラベルには『A』。

NAMAE15

氏名のラベルには『N』。

NAMAE16

生年月日のラベルには『B』といれました。
こんな風にAcceleratorに英文字を入れてやります。すると ラベルにはもともと アクセラレーター設定しても、入力できません。それにフォーカス自体当たらないのです。
ですから、次に移動するわけです。その次のコントロールに移動してくれるっていう、そういう性質がありますから、このラベルにアクセラレーターを 設定することで、うまくこのショートカットキーが機能するということになりますね。

NAMAE17

TabIndex

そして社員IDのTabIndexには、0と入力します。0スタートです。

NAMAE18

そして隣の社員IDを表示するテキストボックスのTabIndexには1と入力し、下図のように順番にTabIndexを入れていきます。

NAMAE19

フォームを起動します まずタブで移動しましょう。タブキーでは、設定した順に移動しますね。

NAMAE20

今度は氏名の 入力ボックスに、Alt+N で移動します。移動できました。
それではその上に社員 id にAlt+Iで移動しましょう。 今度はAlt+Aで住所に移動しましょう。
今度はAlt+B で下の生年月日に移動するのような形で、アクセラレーターというキーを使って、移動すると、自由自在に移動できます。 オルトキーとのセットですが、ショートカットキーを設定することができました。
そしてタブオーダーという順番にぐるぐる回る方法と、このショートカットキーの2つを 合わせれば、キーから手が離れずにマウスを持たないでも入力ができるということで ユーザーにとってはとても便利です。
便利な機能ですので、是非活用してみてください。

NAMAE20