目次
正確な生年月日を入力する
こんにちは。伊川(@naonaoke)です。
顧客情報を登録するときに、必須なのが、生年月日です。
入力ミスをしやすい項目でもあります。
また、名前と生年月日で本人確認をしたりしますので、間違えると、後々大変です。
問題提起
(株)IKAWAの阿久 世子男(アク セスオ)は上司から下記の依頼を受けました。
・生年月日の入力ミスが多いので、事前に防止をしてほしい。
どのようにコードを記載したらいいだろうか?
解決策
・生年月日登録専用の入力フォームを作成する。・手入力をさせないようにする。
DateDiff関数
2つの日時の間隔を返します。
間隔とは日時1と日時2の間に指定した単位の「カウントの基準」が何回あるかを表す数です。
日時1と「カウントの基準」が一致する場合、日時1はカウントの対象になりません。
生年月日は、生まれた日から、今日までの日なので、DateDiff関数を使って求めます。
しかし、生年月日が正しく入力される必要があります。
生年月日入力フォーム 作成手順その1 事前に作成するもの
生年月日の入力は、コンボボックスで選択させるようにします。
テキストボックスをグレイアウトさせる方法は、上の記事を確認してください。
「生年月日入力」のボタンには、別フォームを起動するために、下記のコードを仕込んでおきます。
Private Sub コマンド10_Click()
DoCmd.OpenForm “F_年号変換”
End Sub
フォームの起動のVBAのコードに関しては、上の記事を参照してください。
入力専用フォームも作成しておきます。
もう少し、小さめのフォームを設計しようと思ったのですが、通常のフォームで作成しました。
ここまでが、下準備になります。
生年月日入力フォーム 作成手順その2 コードを仕込む
クリアするコード
Private Sub コマンド97_Click() Forms![F_入力]![生年月日] = "" End Sub
Private Sub コマンド94_Click() Dim a As String Dim b As String Dim c As String Dim d As String Dim e As String a = "西暦" b = "大正" c = "昭和" d = "平成" e = "令和" Select Case True Case [年号] = a Me.[変換] = Me.[年] & "/" & Me.[月] & "/" & Me.[日] Case [年号] = b Me.[変換] = (Me.[年] + 1911) & "/" & Me.[月] & "/" & Me.[日] Case [年号] = c Me.[変換] = (Me.[年] + 1925) & "/" & Me.[月] & "/" & Me.[日] Case [年号] = d Me.[変換] = (Me.[年] + 1988) & "/" & Me.[月] & "/" & Me.[日] Case [年号] = e Me.[変換] = (Me.[年] + 2018) & "/" & Me.[月] & "/" & Me.[日] End Select Me.[変換] = Format([変換], "gggee\年m\月d\日") Forms![F_入力]![生年月日].Enabled = True Forms![F_入力]![生年月日] = Me.[変換] Forms![F_入力]![生年月日].Enabled = False Me.[年号] = "" Me.[年] = "" Me.[月] = "" Me.[日] = "" Me.[変換] = "" DoCmd.Close acForm, "F_年号変換" End Sub
Select Caseについて不安な方は、上の記事を参考にしてください。
生年月日入力フォーム 作成手順その3 コードの作動を確認する
作動が確認できました。
後は、クエリで生年月日を計算すれば、大丈夫です。
生年月日を計算するSQL文
年齢: IIf(Format([西暦],"mm/dd")>Format(Date(),"mm/dd"),DateDiff("yyyy",[西暦],Date())-1,DateDiff("yyyy",[西暦],Date()))
ここがポイント
今回は、伊川がVBAのコードを記載した初期のころです。公開するのも恥ずかしいくらいのコードです。しかし、人にばかにされようとも、VBAは、成果物の積み重ねでスキルが向上します。
まとめ
今回は、阿久 世子男(アク セスオ)が自分でコードを記載して作動することができました。いつかは、かっこいいコードを記載しようと思う阿久 世子男(アク セスオ)なのでした。
今回のサンプルファイルは、No72です。
わからない事を延々と考えるのは、無駄です。
- なんで作動かないの?
- もうやだ!VBAなんか嫌い!
- ネットで調べても情報がない!
必ず作動するコードが、ここにあります。