pickup

データベースを作成するにあたり、入力漏れは大敵です。

今回は、ACCESSではなく、Excelのユーザーフォームについて2つの考えたでアプローチしたいと思います。

 

目次

スポンサーリンク

ユーザーフォームの入力漏れ防止について

 

こんにちは。伊川(@naonaoke)です。

ユーザーフォームで入力漏れを防止するには、様々は方法があります。

テキストボックス1個毎に設定するのは、結構大変です。

テキストボックスが、100個あったら、100個の処理を書く必要があります。

以前の私は、このようなことをしていました。

しかし、とてつもなく、非効率です。

そして、Functionを利用して、一括で、入力漏れを防止していました。

この考え方は、For~Eachを利用して、一括管理します。

しかし、発想を変えると、もっと便利になるかもしれません。

スポンサーリンク

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

 

今回のテーマ
  • Excelのユーザーフォームで入力漏れを防止したい人
  • Functionを勉強している人
  • クラスモジュールを勉強している人

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

このブログの結論
今回の内容は、入門レベルでは決して足りない実務に必須のスキルとは ExcelVBAの11章で紹介されている内容です。
書籍では、クラスモジュールを利用して記載はされていません。
しかし、クラスモジュールを利用すると、すごく、コードが短くなります。

 

スポンサーリンク

入力漏れの考え方

 

今まで、私は、Functionを利用して入力漏れを、防止していました。

しかし、その入力漏れを、すり抜けてくる輩がいます。

現時点では、これが最強と思っていました。

しかし、入門レベルでは決して足りない実務に必須のスキルとは ExcelVBAの11章で

私が感銘する内容でしたので、紹介しようと思います。

 

 

 

入力漏れ防止 作業手順 その1 Functionで入力漏れ防止

 

ACCESSで紹介しましたが、今回はExcelで実行します。

コードは、ほとんど変わりません。

 

 

名前、年齢、電話番号に、入力漏れがあったら、登録させないというモノです。

 

このようにエラーがでます。

しかし、どんなに、入力漏れ防止をしても、すり抜けてくる輩がいます。

Functionのコードは下記の通りです。

 

標準モジュールに下記のコードを記載します。

 

ォームモジュールに下記のコードを記載します。

 

下記のコードに関しては、ユーザーフォームでを、×閉じさせないコードです。

 

入力漏れ防止 作業手順 その2 クラスモジュールで入力漏れ防止

ユーザーフォームを起動すると、登録ボタンが、グレーアウトになっています。

 

テキストボックスに、全て、値が埋まったら、グレーアウトが解除され、登録ボタンを、押せるようになります。

この考え方は素晴らしいです。

しかし、Functionで実行するよりも、各段に難しく、3日考えても分かりませんでした。

 

入力漏れ防止 作業手順 その3 クラスモジュールの考え方

ユーザーフォームには、Changeというイベントがあります。

テキストボックスの値が、変わったら、何かのイベントを発生させるというモノです。

つまり、テキストボックスの内容が変わり、かつ、テキストボックスの内容が、Nullまたは、空ではなかったら、

登録ボタンを有効にさせるという事です。

 

このテキストボックスが、Changeした時に、毎回、判定をすることになります。

しかし、今回は、テキストボックスが、3つしかないので、問題はありません。

もし、テキストボックスが、100個あった場合、100個の処理を書くのかという問題に直面します。

その時に、利用するのが、クラスモジュールです。

テキストボックスのChangeイベントが発生するという、このイベントを、クラスモジュールで一括管理します。

 

ここが、分かりませんでした。

テキストボックス毎に処理をするのがイヤだったので、3日考えましたがダメでした。

なので、某掲示板で教えていただきました。

クラスモジュールは、ネットで探しても、サンプルが少ないので、皆さまのお役に立てれば幸いです。

入力漏れ防止 作業手順 その4 クラスモジュールのコード

クラスモジュールに下記のコードを記載します。

クラスは、Class1とします。

 

標準モジュールに下記のコードを記載します。

 

フォームモジュールに下記のコードを記載します。

入力漏れ防止 作業手順 その5 所感

 

入門レベルでは決して足りない実務に必須のスキルとは ExcelVBAでは、テキストボックス毎に処理を記載しています。

この、素晴らしい回答をしてくれた方も、テキストボックス3つ位では、ありがたみが無いと仰っていました。

しかし、私は、テキストボックス3つでも、クラスモジュールを利用したいと思っています。

それは、汎用性があるからです。

勉強不足を痛感した瞬間でした。

 

ここがポイント

 

ここがポイント
Function8.png
このコードは、クラスモジュールが、たとえ100個になっても、全然、平気なのです。
なぜ、クラスモジュールに関する書籍が無いのか不思議です。
少しの細工は、テキストボックスの冠に、txtをつけるようにして、Functionとクラスモジュールを利用することで、
メンテナンスも、コードの可読性も、向上します。
もっと、クラスモジュールを勉強したいと思いました。
動画とブログでわかりやすくExcelとACCESSを紹介しています

まとめ

 

今回は、自分で正解には、たどりついていないので、コードは公開します。

是非とも、コードを眺めて、クラスモジュールを、何となくでもいいので、勉強してほしいと思います。

この処理を覚えると本当に便利です。

今回も最後まで読んでいただき、ありがとうございました。

今回のサンプルファイルは、No288です。

毎日の業務が、3時間短縮できます

わからない事を延々と考えるのは、無駄です。

  • なんで作動かないの?
  • もうやだ!VBAなんか嫌い!
  • ネットで調べても情報がない!

必ず作動するコードが、ここにあります。

スポンサーリンク

Twitterでフォローしよう

おすすめの記事