VBA, MS Access MS Access в примерах

Дата - Возраст на конкретную или текущую дату

Public Function AgeByBirthDay(bdDate As Variant, Optional forDate As Variant = Null) As Integer
'es 06.12.2012
'Возвращает возраст на текущую дату (или на конкретную дату)
'   при ошибке или пустом аргументе bdDate возвращает -1 (МИНУС ОДИН)
'Аргументы:
'   bdDate    -  Дата Рождения
'   forDate   -  Дата на которую рассчитать (по умолчанию = сегодня)
'--------------------------------------------------------------------------
On Error GoTo AgeByBirthDayErr
'Проверяем аргументы
    If IsNull(forDate) Then forDate = Date

'Разница в годах между датой рождения и датой на которую
    AgeByBirthDay = DateDiff("yyyy", bdDate, forDate)

'Вычитается один год, если в этом году дня рождения еще не было
    If DateSerial(Year(forDate), Month(bdDate), Day(bdDate)) > forDate Then
        AgeByBirthDay = AgeByBirthDay - 1
    End If
AgeByBirthDayBye:
    Exit Function
AgeByBirthDayErr:
    Err.Clear
    AgeByBirthDay = -1
    Resume AgeByBirthDayBye
End Function

Назад ToTop
L.E. 27.06.2018
Рейтинг@Mail.ru