| 履歴書などの年月計算方法 |
| 通常ある日付データ間の年数や月数を得る場合は、DateDiff関数を用います。例えば、「日付1」と「日付2」があってこの間は何ヶ月かを知るにはDateDiff("m",[日付1],[日付2])という式になります。 しかし、この場合、1ヶ月に満たないものは「0」として処理されます。たとえば、平成13年4月1日から平成14年3月31日までは、12ヶ月=1年となるはずなのに上記の例では11ヶ月にしか判断されません。 |
| 履歴書のように、ほとんどが月初めから月末となる場合には、別な計算方法が必要になってきます。 まず、標準モジュールに次のように記述します。 |
| '--------------------------------------------------- Public Function nen(日付1, 日付2) As Long Dim tuki2 As Long If Day(日付1) < Day(日付2) Then tuki2 = DateDiff("m", 日付1, 日付2) + 1 Else tuki2 = DateDiff("m", 日付1, 日付2) End If nen = Int((tuki2) / 12) End Function '--------------------------------------------------- Public Function tuki(日付1, 日付2) As Long If Day(日付1) < Day(日付2) Then tuki = (DateDiff("m", 日付1, 日付2) + 1) Mod 12 Else tuki = (DateDiff("m", 日付1, 日付2)) Mod 12 End If End Function '--------------------------------------------------- |
| 上段は「年数」を下段は「月数」を計算させます。次に、「日付1」「日付2」が格納されたテーブルを元にクエリーを作成し、上記関数を呼び出したフィールドを作成します。このクエリーをもとに下記のようなフォームを作成しました。 |
![]() |
| また、年数を集計する場合は、フォームフッターにテキストボックスを 作成し、コントロールソースに次のように式を入れます。 |
| 【月数合計】 =IIf(Sum([tuki])<12,Sum([tuki]),Sum([tuki]) Mod 12) 【年数合計】 =IIf(Sum([tuki])<12,Sum([nen]),Int(Sum([tuki])/12)+Sum([nen])) |