В этой статье мы создадим макрос для перечисления месяцев между заданным периодом, а также количества дней в этом конкретном месяце. Также будет отображаться общее количество дней между заданным периодом.

Мы создали макрос «DaysInPeriod» для перечисления месяцев и количества дней в месяце. Макрос можно запустить, нажав кнопку «Отправить».

Перед запуском макроса необходимо ввести дату начала и окончания. Он принимает значение в ячейке «G6» как дату начала и значение в ячейке «G7» как дату окончания. Результат будет отображаться ниже в ячейке «F9».

RawInput

При нажатии кнопки отправки макрос отобразит название месяца в столбце F и количество дней в этом месяце в столбце G. Последняя строка покажет общее количество дней между указанным периодом.

AfterRunningMacro

Логическое объяснение

В макросе мы начинаем цикл от начальной даты до указанной конечной даты. В цикле проверяем последнюю дату месяца. Если встречается последняя дата месяца, то название месяца и количество дней в этом месяце отображаются в столбцах F и G. Аналогично, мы также проверяем дату окончания. Когда встречается дата окончания, отображается запись за последний месяц и количество дней в этом месяце.

Пожалуйста, введите код ниже

Option Explicit

Sub DaysInPeriod()

Dim StartDate, EndDate As Date

Dim intRow As Integer, intDays As Integer

'Clearing previous content

Range("F10:G1048576").ClearContents

'Getting start and end date

StartDate = Range("G6")

EndDate = Range("G7")

'Initializing the variable to starting row number

intRow = 10

'Listing the months and number of days from starting date to end date

Do



intDays = intDays + 1



'Checking for last date of the month or when StartDate is equal to EndDate

If (Month(StartDate) <> Month(StartDate + 1)) Or StartDate = EndDate Then

'Inserting the month name

Cells(intRow, 6) = Format(StartDate, "mmmm")

'Inserting number of days in the month

Cells(intRow, 7) = intDays

'Moving to next row

intRow = intRow + 1

intDays = 0

End If



'Moving to next date

StartDate = StartDate + 1

Loop Until StartDate > EndDate

'Getting the sum in the last row

Cells(intRow, 6) = "Total Days"

Cells(intRow, 7) = Application.Sum(Range("G10:G" & intRow))



End Sub

Если вам понравился этот блог, поделитесь им с друзьями на Facebook и Facebook.

Мы будем рады услышать от вас, дайте нам знать, как мы можем улучшить нашу работу и сделать ее лучше для вас. Напишите нам на [email protected]