前回、Tagを利用した一括処理の方法を紹介しました。
汎用性がないかもしれないコードだったかもしれません。
今回は、実務で利用できるコードです。
目次
クラスモジュールで、一括処理を実行して、入力漏れを防止
こんにちは。伊川(@naonaoke)です。
今回も一括処理系の内容になります。
思えば、今回紹介する処理も、ACCESS初心者の頃は、できないと思っていました。
入力フォームで、入力漏れを防止するという問題に直面したときに、上席から、テキストボックスに色を付けたらいいのでは?
こんな提案がありました。
ちなみに、テキストボックスは、200個くらいありました。
知らないとはいえ、なんてことを言うんだ。
本当にそう思いました。
多分if構文でやった場合、4行くらいですかね。
4行×200のテキストボックス=800コード
こんなことは、非現実的です。
だから、即答でしました。
しかし、その無理は、クラスモジュールと出会い、現実となりました。
このブログはこんな人にお勧め
- ACCESSでVBAを勉強している人
- クラスモジュールを勉強している人
- 入力フォームで、入力漏れを無くしたい人
このブログを、読み終わるころには・・・・
一括処理に関しては、今回は、配列を使います。
配列も、一括処理には重要だと思うはずです。
配列は、難しいですが、コードを眺めて、慣れていきましょう。
クラスモジュール
クラスモジュールに関しては、何度が説明しているので、下記の記事を参照してください。
クラスモジュールに関しては、
人間を使って説明する例、
よく使う機能をクラスモジュールへ移行する例
今回は、クラスモジュールを利用して、イベントを発生させます。
人間を使った説明や、たい焼きの例もいいですが、
上記の書籍には、クラスモジュールが記載されています。
一読の価値はあります。
クラスモジュールで一括処理 作業手順 その1 入力フォームを確認
テキストボックスが、フォーカスされたら、テキストボックスに赤の色がます。
通常であれば、テキストボックスの、更新後処理に、イベント発生のコードを記載しなければなりません。
たった3つのテキストボックスですが、これが、10個も、20個もあったら本当に面倒になります。
この同じ処理、つまり、同じイベントを、クラスモジュールで設計するのです。
クラスモジュールで一括処理 作業手順 その2 クラスモジュールのコード
このWitheventsは、使えます。
このコードの意味は、
テキストボックスがフォーカスされたら、テキストボックスのフォーカスが外れたら、テキストボックスの背景を変えるということです。
変数オブジェクトでイベントの作成が可能になります。
例えば、前回紹介したように、一気にチェックを入れるようなイベントです。
今回も、テキストボックスという、共通したものに、イベントを発生させるので、このコードを利用します。
イベントを発生させるコード
この辺は、見た通りです。
特に説明は不要かと思います。
Terminateは、クラスモジュールへ引っ越しの記事でも、現れました。
クラスモジュールで一括処理 作業手順 その3 フォームモジュールのコード
ここのコードは、少し難しいかもしれませんね。
動的配列を利用して、TypeName関数を利用して、型が、テキストボックスの数を配列にセットするという方法です。
Select Caseを利用して、型がTaxtBoxの時は、イベント(テキストボックスの背景の色を変える)を発生させます。
各テキストボックスに、イベントを記載しなくても、たった、数行のコードで、フォーム全体のテキストボックスを操作できます。
ここがポイント
今回も一括処理系の内容です。
For~Each~Next Controlsが登場してきます。
クラスモジュールは、設計図といいましたが、VBAのコードのみならず、
入力フォームにおいて、テキストボックスの配置も、クラスモジュールに合わせて設定するということですね。
まとめ
クラスモジュールの説明が、本当に、人間や、たい焼きの説明であることが、有害のなにものでもないですね。
教える側は、1つの結果から、様々は背景を説明することが大切です。
また、様々な背景から、1つ結果に結びつくような説明も重要です。
いつか、人間や、たい焼きの説明も重要になるかもしれません。
しかし、コードを操作するには、なんとっても、楽しくないと、勉強する気にはなれませんね。
今回も最後まで読んでいただきありがとうございました。
今回のサンプルファイルは、No258です。
わからない事を延々と考えるのは、無駄です。
- なんで作動かないの?
- もうやだ!VBAなんか嫌い!
- ネットで調べても情報がない!
必ず作動するコードが、ここにあります。