pickup

目次

正確な生年月日を入力する

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

顧客情報を登録するときに、必須なのが、生年月日です。

入力ミスをしやすい項目でもあります。

また、名前と生年月日で本人確認をしたりしますので、間違えると、後々大変です。







問題提起

 

(株)IKAWAの阿久 世子男(アク セスオ)は上司から下記の依頼を受けました。

・生年月日の入力ミスが多いので、事前に防止をしてほしい。

どのようにコードを記載したらいいだろうか?







解決策

 

回答
sesuo2.jpg

・生年月日登録専用の入力フォームを作成する。・手入力をさせないようにする。







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()))







ここがポイント

ここがポイント
Function8.png
今回は、伊川がVBAのコードを記載した初期のころです。公開するのも恥ずかしいくらいのコードです。しかし、人にばかにされようとも、VBAは、成果物の積み重ねでスキルが向上します。

 







スポンサーリンク

まとめ

今回のまとめ
sesuo6.jpg
今回は、阿久 世子男(アク セスオ)が自分でコードを記載して作動することができました。いつかは、かっこいいコードを記載しようと思う阿久 世子男(アク セスオ)なのでした。

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

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

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

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

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

スポンサーリンク

Twitterでフォローしよう

おすすめの記事