見出し画像

【ACCESS VBA】クラスモジュールで、一括処理を実行して、入力漏れを防止


前回、Tagを利用した一括処理の方法を紹介しました。
汎用性がないかもしれないコードだったかもしれません。
今回は、実務で利用できるコードです。

クラスモジュールで、一括処理を実行して、入力漏れを防止

こんにちは。伊川(@naonaoke)です。
今回も一括処理系の内容になります。
思えば、今回紹介する処理も、ACCESS初心者の頃は、できないと思っていました。
入力フォームで、入力漏れを防止するという問題に直面したときに、上席から、テキストボックスに色を付けたらいいのでは?
こんな提案がありました。
ちなみに、テキストボックスは、200個くらいありました。

知らないとはいえ、なんてことを言うんだ。
お前の親の顔が見てみたい
本当にそう思いました。
多分if構文でやった場合、4行くらいですかね。
4行×200のテキストボックス=800コード
こんなことは、非現実的です。
だから、即答でしました。
無理です
しかし、その無理は、クラスモジュールと出会い、現実となりました。

このブログはこんな人にお勧め

ACCESSでVBAを勉強している人
クラスモジュールを勉強している人
入力フォームで、入力漏れを無くしたい人

このブログを、読み終わるころには・・・・


一括処理に関しては、今回は、配列を使います。
配列も、一括処理には重要だと思うはずです。
配列は、難しいですが、コードを眺めて、慣れていきましょう。

クラスモジュール

クラスモジュールに関しては、何度が説明しているので、下記の記事を参照してください。

人間を使って説明する例、
よく使う機能をクラスモジュールへ移行する例

今回は、クラスモジュールを利用して、イベントを発生させます。
人間を使った説明や、たい焼きの例もいいですが、
クラスモジュールに関しては、イベントを発生させるコードを勉強したほうが楽しいです。

クラスモジュールで一括処理 作業手順 その1 入力フォームを確認

画像1

テキストボックスが、フォーカスされたら、テキストボックスに赤の色がます。
ブログは、静止画になりますので、ぜひ、動画を観てください。
通常であれば、テキストボックスの、更新後処理に、イベント発生のコードを記載しなければなりません。
たった3つのテキストボックスですが、これが、10個も、20個もあったら本当に面倒になります。
この同じ処理、つまり、同じイベントを、クラスモジュールで設計するのです。
クラスモジュールで一括処理 作業手順 その2 クラスモジュールのコード


クラスモジュールで一括処理 作業手順 その2 クラスモジュールのコード

画像2


このWitheventsは、使えます。
このコードの意味は、
テキストボックスがフォーカスされたら、テキストボックスのフォーカスが外れたら、テキストボックスの背景を変えるということです。
変数オブジェクトでイベントの作成が可能になります。
例えば、前回紹介したように、一気にチェックを入れるようなイベントです。
今回も、テキストボックスという、共通したものに、イベントを発生させるので、このコードを利用します。

画像3

インテリジェンスが利用できると便利ですね。

イベントを発生させるコード

画像4

この辺は、見た通りです。
特に説明は不要かと思います。
Terminateは、クラスモジュールへ引っ越しの記事でも、現れました。

画像5

ここのコードは、少し難しいかもしれませんね。
動的配列を利用して、TypeName関数を利用して、型が、テキストボックスの数を配列にセットするという方法です。
Select Caseを利用して、型がTaxtBoxの時は、イベント(テキストボックスの背景の色を変える)を発生させます。
各テキストボックスに、イベントを記載しなくても、たった、数行のコードで、フォーム全体のテキストボックスを操作できます。

ここがポイント

今回も一括処理系の内容です。
For~Each~Next Controlsが登場してきます。
クラスモジュールは、設計図といいましたが、VBAのコードのみならず、
入力フォームにおいて、テキストボックスの配置も、クラスモジュールに合わせて設定するということですね。

まとめ

クラスモジュールの説明が、本当に、人間や、たい焼きの説明であることが、有害のなにものでもないですね。
教える側は、1つの結果から、様々は背景を説明することが大切です。
また、様々な背景から、1つ結果に結びつくような説明も重要です。
いつか、人間や、たい焼きの説明も重要になるかもしれません。
しかし、コードを操作するには、なんとっても、楽しくないと、勉強する気にはなれませんね。
今回も最後まで読んでいただきありがとうございました。

よろしければサポートをお願いします。いただいたお金に関しては、書籍の購入に充て、より良い情報を皆様に提供します。