アクセス担当のまみです。
データを入力する際に、伝票番号の桁数が決まっていたり、社員コードは5桁とか決まっていたりすることがあると思います。
桁数が決まっているのに、桁が多かったり少なかったり。入力ミスってやっぱりあるんです・・・
だけど、最初から決まった桁数(文字数)しか入力できなかったら、入力ミスが随分減りますね。
そんな機能をVBAで作成してみましょう!
フォームからデータの登録
では、「商品コード」ファイルを開きましょう。
「商品コード」ファイルは下記の記事で作成してみてくださいね!
フォームからのデータ登録については下記の記事で確認してみてくださいね!
①「btn登録」ボタンを選択した状態で、プロパティーシートの②「イベント」タブを左クリックします。
③「クリック時」を「イベントプロシージャ」にしてコードを開きましょう。
「Private Sub btn登録_Click()」と「End Sub」の間に下記のコードを記載します。
Private Sub btn登録_Click() ' 必須項目のメッセージボックス If Me.tx商品コード = "" Then MsgBox "商品コードが入力されていません" Exit Sub Else End If If Me.tx商品名 = "" Then MsgBox "商品名が入力されていません" Exit Sub Else End If If Me.tx金額 = "" Then MsgBox "金額が入力されていません" Exit Sub Else End If Dim Rst As DAO.Recordset Set Rst = CurrentDb.OpenRecordset("T_商品コード", dbOpenTable) With Rst .AddNew .Fields("商品コードNO") = Me!tx商品コード .Fields("商品名") = Me!tx商品名 .Fields("金額") = Me!tx金額 .Fields("登録日付") = Now .Update End With Rst.Close Set Rst = Nothing MsgBox "データが登録されました" Me!tx商品コード = "" Me!tx商品名 = "" Me!tx金額 = "" 'フォーカスを当てる Me!tx商品コード.SetFocus
ここまでは、上の記事でご紹介したデータ登録と同じです。
しっかり動作確認をしておいてくださいね。
コードをコピーされたい場合は下記の記事を参考にしてください。
実際今回のプログラムは別のファイルからコピーしてきたのですが、今回のテキストボックスの名前に変更するのに2か所ほど間違ってまして・・・
エラーが出ました・・・
動作確認とっても大事なので、楽しみながらやってくださいね。
そうそう忘れるところでした!動作確認して気が付いてくれていたかもしれません。
「Private Sub Form_Load()」と「End Sub」の間に下記のコードを追加しておいてくださいね。
Me!tx商品コード = "" Me!tx商品名 = "" Me!tx金額 = ""
なぜこのコードが必要なのかは・・・
下記の記事をどうぞ!
「Me.tx商品コード.SetFocus」「Me.tx商品名.SetFocus」「Me.tx金額.SetFocus」をそれぞれのメッセージボックスの後に入れておきましょう!
文字数の制限
ようやく今回の本題、文字数を制限してみましょう。
そうだな、商品コードは必ず5桁と決まっているとしましょう。
5桁よりも多くても少なくても入力できないように設定してみましょう!
①「tx商品コード」を選択した状態で、プロパティーシートの②「イベント」タブを左クリックします。
③「フォーカス喪失時」を「イベントプロシージャ」にしてコードを開きましょう。
「Private Sub tx商品コード_Exit(Cancel As Integer)」と「End Sub」の間に下記のコードを追加しましょう。
'桁数を制限する If Len(tx商品コード) <> 5 Then MsgBox "桁数が違います" Cancel = True Else End If
「len」って文字数を数えてくれる関数なんです。
Len(tx商品コード)でtx商品コードの文字数を数えてくれるので、5文字じゃなかったら、「桁数が違います」ってメッセージボックスが表示されるようにしています。
Cancel = Trueは、tx商品コードからフォーカスが移動しないようにしてくれます。
さっそく「F_データ入力」をフォームビューで開いて動作確認してみましょう!
まとめ
データ入力って気をつけていてもやっぱり入力ミスってあるんですね。
なるべく入力ミスが少なくなるようなプログラムが作成できると嬉しいですね!