Вы можете использовать пользовательскую функцию GetLastDayOfMonth()
и передать интересующий вас диапазон:
Option Explicit
Public Function GetLastDayOfMonth(ByVal myDate As Date) As Date
GetLastDayOfMonth = DateSerial(Year(myDate), Month(myDate) + 1, 0)
End Function
Public Sub TestMe()
Range("A1") = DateSerial(2000, 11, 11)
If Range("A1") = GetLastDayOfMonth(Range("A1")) Then
Debug.Print "LAST DAY!"
End If
Range("A1") = DateSerial(2000, 12, 31)
If Range("A1") = GetLastDayOfMonth(Range("A1")) Then
Debug.Print "LAST DAY! " & Range("A1")
Range("A1") = DateAdd("d", 1, Range("A1"))
End If
End Sub
Функция проверяет месяц и год прошедшей даты и возвращает ее.новая дата, которая является последним днем месяца для этого конкретного месяца и года.
Затем в версии TestMe
вы можете сравнить данную дату с последним днем месяца, сгенерированнымфункция.Если даты совпадают, то эта дата является последним днем соответствующего месяца.Используя DateAdd()
, можно получить следующий день lastDay.
В приведенном выше примере я явно написал Range ("A1") 9 раз, поэтому, вероятно, легче следовать.