アクセスVBAで決まった文字数しか入力できないようにしよう

 

アクセス担当のまみです。

 

データを入力する際に、伝票番号の桁数が決まっていたり、社員コードは5桁とか決まっていたりすることがあると思います。

桁数が決まっているのに、桁が多かったり少なかったり。入力ミスってやっぱりあるんです・・・

 

だけど、最初から決まった桁数(文字数)しか入力できなかったら、入力ミスが随分減りますね。

 

そんな機能をVBAで作成してみましょう!

 

フォームからデータの登録

 

では、「商品コード」ファイルを開きましょう。

 

「商品コード」ファイルは下記の記事で作成してみてくださいね!

 

アクセスのテーブルやフォームの作成に慣れてしまおう!

2018年10月19日
 
 
「登録」ボタンクリックで、テーブルにデータが登録されるようにしてみましょう!
 
 
(はてな君)
データ入力フォームからデータの登録ができるようにコード書けるよ!
 
 
 
(あいちゃん)
はてな君はVBA面白くなってきてるみたいですね!どんどん吸収してくれてる。

 

 

フォームからのデータ登録については下記の記事で確認してみてくださいね!

 

【Access】vbaでフォームからレコード追加しよう

2018年9月24日
 
 
 
 

①「btn登録」ボタンを選択した状態で、プロパティーシートの②「イベント」タブを左クリックします。

③「クリック時」を「イベントプロシージャ」にしてコードを開きましょう。

 

 

「Private Sub btn登録_Click()」と「End Sub」の間に下記のコードを記載します。

 

 

 

ここまでは、上の記事でご紹介したデータ登録と同じです。

しっかり動作確認をしておいてくださいね。

 

コードをコピーされたい場合は下記の記事を参考にしてください。

関連記事
 
 
 
 
 
(はてな君)
データ登録前にもやったことあるから大丈夫だよ~。動作確認しないとダメ~?

 

(あいちゃん)
動作確認って大事なんです!エラーが起こった時に、ここまではちゃんと動いていたってわかっていれば、それ以降の作業のどこかに間違いがあるってわかるでしょ?だけど、最初から動作確認してなかったら・・・どこが悪いのやら・・・

 

(はてな君)
そっかぁ。データ登録は出来てるはずだからって思ってたら実はデータ登録の部分が間違ってたとかあるんだぁ。

 

(あいちゃん)
そういうこと!結局自分のためなんです!

 

 

実際今回のプログラムは別のファイルからコピーしてきたのですが、今回のテキストボックスの名前に変更するのに2か所ほど間違ってまして・・・

エラーが出ました・・・

動作確認とっても大事なので、楽しみながらやってくださいね。

 

そうそう忘れるところでした!動作確認して気が付いてくれていたかもしれません。

 

「Private Sub Form_Load()」と「End Sub」の間に下記のコードを追加しておいてくださいね。

 

なぜこのコードが必要なのかは・・・

下記の記事をどうぞ!

 

Accessフォーム読み込み時の処理はココに記載!

2018年9月27日
 
 
それから、動作確認をしていて気が付きました・・・
必須項目が入っていないとメッセージボックスが表示されるようにしていますが、その後は、「OK」を左クリックしたら、フォーカスがあたるようになって欲しいですね!
 
 
 
(はてな君)
「Me.tx商品コード.SetFocus」とかいれたらいいんだ!
 

 

(あいちゃん)
どこに入れたらいいかもわかるかな?

 

(はてな君)
えっと~。メッセージボックスのあと!

 

「Me.tx商品コード.SetFocus」「Me.tx商品名.SetFocus」「Me.tx金額.SetFocus」をそれぞれのメッセージボックスの後に入れておきましょう!

 

 

 

文字数の制限

 

ようやく今回の本題、文字数を制限してみましょう。

そうだな、商品コードは必ず5桁と決まっているとしましょう。

5桁よりも多くても少なくても入力できないように設定してみましょう!

 

(はてな君)
そんなことができるんだ!すごいね!

 

 

 

①「tx商品コード」を選択した状態で、プロパティーシートの②「イベント」タブを左クリックします。

③「フォーカス喪失時」を「イベントプロシージャ」にしてコードを開きましょう。

 

「Private Sub tx商品コード_Exit(Cancel As Integer)」と「End Sub」の間に下記のコードを追加しましょう。

 

 

 

 

「len」って文字数を数えてくれる関数なんです。

Len(tx商品コード)でtx商品コードの文字数を数えてくれるので、5文字じゃなかったら、「桁数が違います」ってメッセージボックスが表示されるようにしています。

Cancel = Trueは、tx商品コードからフォーカスが移動しないようにしてくれます。

 

アクセスvbaフォーカスを移動させない方法!

2018年10月8日
 
 

さっそく「F_データ入力」をフォームビューで開いて動作確認してみましょう!

 

 

(はてな君)
桁が多くても少なくてもメッセージが出た!5桁になるまでカーソルも動かないから桁数を間違えてって入力はなくなるね!

 

まとめ

 

データ入力って気をつけていてもやっぱり入力ミスってあるんですね。

なるべく入力ミスが少なくなるようなプログラムが作成できると嬉しいですね!