数字キーだけで和歴の日付を入力できたらいいよね

スポンサーリンク
この記事は約6分で読めます。

今日の内容は、パソコンで和歴を扱う方に向けたものです。

Accessで日付を入力するときは、「定型入力」という機能を使うと便利ですね。

では、和歴を入力するときはどうでしょうか?

「定型入力ウィザード」から「和暦日付(T、S、H)」を選択して、定型入力に「L99\年99\月99\日 」と設定すると、和歴で入力することができます。

この時、令和2年3月15日と入力したいときは、r 0 2 0 3 1 5 とキーを押していきます。

テンキーから指を離して、「R」キーを押さなきゃならんのですよ。入力ミスしちゃいますよね。西暦ならすべてテンキーで入力できるのにね。

和休もそう思っていました。

スポンサーリンク

和歴を数字だけで入力することはできないのかな?

和休の職場が導入している業務システムは、公的機関向けに作られているものですので、日付の入力は和歴で行います。

最初は、AccessやExcelと同じように、明治は「m」、大正は「t」、昭和は「s」、平成は「h」、令和は「r」と入力してから数字キーを打っていたのですが、平成15年ぐらいに行われたバージョンアップで、明治は「1」、大正は「2」、昭和は「3」、平成は「4」、令和は「5」というように数字が割り当てられたのです。

つまり、令和2年3月15日と入力したいときは、5 0 2 0 3 1 5 とキーを押せばいいのですよ。こいつは楽ですね!

そこで、和休も数字だけで和歴入力できるように、VBAを組んでみたのが先日の記事です。

では、この関数を応用して、数字キーによる和歴の日付入力を実装してみたいと思います。

和休がAccessのフォームに日付入力用のテキストボックスを設置するときは、オリジナルのルールを決めています。

  • 文字配置は「中央」を設定
  • 「書式」に gee/mm/dd を設定 (令和2年3月15日は R02/03/15 と表示される)
  • IME入力モードは「使用不可」を設定
書式を設定
IMEモードを設定

こうしておけば、日付型であるフィールドに保存された数値をテキストボックスに代入するだけで、R02/03/15 のような日付で表示されます。

DAOやADOを使ってフォーム上の日付をテーブルに追加・更新するときも、以下のようなSQL文を書けばそのまま日付として認識されて、追加・更新することができます。

追加のとき
"insert into 職員マスタ (職員番号,生年月日) values(" & me.txt_職員番号 & ",#" & me.txt_生年月日 & "#)"
更新のとき
"update 職員マスタ set 生年月日=#" & me.txt_生年月日 & "# where 職員番号=" & me.txt_職員番号
スポンサーリンク

手順1 元号管理テーブルを作成する

では、Accessファイルに組み込む手順を説明します。

使用される際は、そちらの環境で十分テストのうえ使用してください。

明治は「1」、大正は「2」、昭和は「3」、平成は「4」、令和は「5」というように、元号に数字を割り当てます。

元号と数字を紐づけるため、「元号管理テーブル」を作成します。元号管理テーブルについては、先日の記事をご覧ください。

スポンサーリンク

手順2 標準モジュールにコードを記述する

標準モジュール内に、先日の記事で紹介した日付型→和歴7桁日付に変換する関数と、和歴7桁日付→日付型に変換する関数を記述します。

スポンサーリンク

手順3 フォームにコントロールを配置する

テキストボックスとコマンドボタンを作成したところ

フォームを新規作成し、テキストボックスを1つ、コマンドボタンを1つ作成しました。

テキストボックスだけあれば十分なのですが、フォームの中にコントロールが1つしかないと、テキストボックスからフォーカスが離れませんので、とりあえずフォーカスが移動するコントロールを作ってください。

今回は、コマンドボタンを1つ作成しました。

スポンサーリンク

手順4 コントロールの処理を記述する

和歴7桁日付を扱うコントロールにフォーカスが当たったとき、日付型→和歴7桁日付に変換する関数を実行します。

フォーカス取得時

「txt_日付」と名前を付けたテキストボックスのフォーカス取得時イベントに、以下のコードを記述します。

Private Sub txt_日付_Enter()

'テキストボックスに設定した書式をクリアします
Me.txt_日付.Format = ""

'日付を和歴7桁日付に変換します
Me.txt_日付 = WdatetoJP7(Me.txt_日付)
End Sub

フォーカス喪失時

同様に、フォーカス喪失時イベントに、以下のコードを記述します。

Private Sub txt_日付_Exit(Cancel As Integer)

'和歴7桁日付を日付に変換します
Me.txt_日付 = JP7toWdate(Me.txt_日付)

'テキストボックスに書式を設定します
Me.txt_日付.Format = "gee/mm/dd"
End Sub
スポンサーリンク

動作イメージです

テキストボックスに和歴7桁日付を入力したところ

テキストボックスに、令和2年3月15日を入力します。和歴7桁日付で入力するので、5 0 2 0 3 1 5 と入力します。

入力できたら、Enterキーを押下して、フォーカスをコマンドボタンに移してください。

和歴7桁日付を日付に変換したところ

すると、フォーカス喪失時イベントに記述した和歴7桁日付→日付に変換する関数が、5020315を2020/03/15 という日付に変換します。

さらにテキストボックスの書式に「gee/mm/dd」を設定したので、最終的にR02/03/15 という表示に変換されました。

では、R02/03/15 と表示されているテキストボックスにフォーカスを移してください。

テキストボックスに和歴7桁日付を入力したところ

テキストボックスがフォーカスを取得すると、フォーカス取得時イベントに記述した日付→和歴7桁日付に変換する関数が 5020315 という和歴7桁日付に変換します。

このようにして、数字キーだけで和歴を入力することができました。

スポンサーリンク

おまけ

テキストボックスの書式を変更

フォーカス喪失時の書式を「gee/mm/dd」ではなく、「gggee年mm月dd日」に変更すると、令和02年03月15日 という表示になりますので、必要に応じて変更してください。

Private Sub txt_日付_Exit(Cancel As Integer)

'和歴7桁日付を日付に変換します
Me.txt_日付 = JP7toWdate(Me.txt_日付)

'テキストボックスに書式を設定します
Me.txt_日付.Format = "gggee年mm月dd日"
End Sub

また、元号管理テーブルを明治「1」、大正「3」、昭和「5」、平成「7」、令和「9」に置き換えると、年金事務所で使用しているシステムが扱っている日付になります。

元号CD元号元号FR元号TO
1明治1868/01/251912/07/29
3大正1912/07/301926/12/24
5昭和1926/12/251989/01/07
7平成1989/01/082019/04/30
9令和2019/05/019999/12/31
年金事務所で使う日付形式

令和2年3月15日は9020315と表示されます。

コメントをどうぞ!