При использовании функции DateDiff с использованием интервала «гггг», функция просто вычитает разницу между значением года date1 и date2? - PullRequest
1 голос
/ 14 мая 2019

Макрос, по-видимому, не учитывает дни при расчете возраста человека.

Sub alcohol_test()
    Dim strBirthday As Date

    strBirthday = CDate(InputBox("Input date of birth to be verified: ", "Date of Birth"))
    If DateDiff("yyyy", strBirthday, Date) < 21 Then MsgBox ("Customer underage, sale of alcohol illegal.") _
    Else MsgBox ("Age Confirmed: Alcohol may be sold")

End Sub

1 Ответ

0 голосов
/ 15 мая 2019

Это еще хуже:
При сравнении 31 декабря с 1 января следующего года,
DateDiff для Года ("гггг") возвращает 1, даже если прошел только один день, говорит Microsoft .

Так что вам лучше сравнить две даты, например, если день рождения был раньше дня 21 год назад.

Dim datBirthday as Date
datBirthday = CDate(InputBox("Input date of birth to be verified: ", "Date of Birth"))
If datBirthday < DateSerial(Year(Date) - 21, Month(Date), Day(Date)) Then

Я изменил имя переменной, какначало с "str" ​​немного вводит в заблуждение при использовании значений даты.

...