現年齢をVBAで算出したい
DateDiff関数を使って年齢を求める事も可能ですが、少し面倒なコードになります。(年度の差を算出する関数)
※365日経ってなくても年が変わったら1年としてカウントする為。
int関数を応用して使えば、現年齢を簡単に算出できます。
現年齢を求めるサンプルコード
'■現年齢を算出するパーツ化したサブプロシージャ Public Function Call_GetAge(sBirthDay As String) As Long Dim age As Long '■年齢を計算 age = Int((Format(Date, "yyyymmdd") - Format(sBirthDay, "yyyymmdd")) / 10000) Call_GetAge = age End Function
実際の使い方
Public Sub sample() Call Call_GetAge("2000/02/26") '2021/02/27時点では「21」が戻ってくる Call Call_GetAge("2000/02/27") '2021/02/27時点では「21」が戻ってくる Call Call_GetAge("2000/02/28") '2021/02/27時点では「20」が戻ってくる End Sub
注意点
- 現在の西暦8桁から誕生日西暦8桁を引いた後10000で割る事で、年齢を小数点有で表示します。
※小数点は誕生日からの経過した日時を数値で表している
例)
( 20210227 – 20000226) / 10000 =21.0001
( 20210227 – 20000227) / 10000 =21
( 20210227 – 20000228) / 10000 =20.9999 - 上記をint関数で整数化する事で現年齢を返します。
- 注意点として単純に数値を変換しているだけになる為、2000/99/99といった不正な誕生日を渡すと
結果も不正になります。事前にisDate関数で日付かどうか判断すべきでしょう。
コメント