En este artículo, crearemos una macro para enumerar meses entre el período definido y también el número de días en ese mes en particular. También mostrará el número total de días entre el período definido.

Hemos creado la macro «DaysInPeriod» para enumerar los meses y el número de días de un mes. La macro se puede ejecutar haciendo clic en el botón «Enviar».

Antes de ejecutar la macro, se debe proporcionar información para la fecha de inicio y finalización. Toma el valor en la celda «G6» como fecha de inicio y el valor en la celda «G7» como fecha de finalización. La salida se mostrará a continuación en la celda «F9».

RawInput

Al hacer clic en el botón enviar, la macro mostrará el nombre del mes en la columna F y el número de días de ese mes en la columna G. La última fila mostrará el número total de días entre el período especificado.

AfterRunningMacro

Explicación lógica

En la macro, comenzamos a recorrer desde la fecha de inicio hasta la fecha de finalización especificada. Durante el bucle, verificamos la última fecha de un mes. Si se encuentra la última fecha de un mes, el nombre del mes y el número de días de ese mes se muestran en las columnas F y G. De manera similar, también verificamos la fecha de finalización. Cuando se encuentra la fecha de finalización, se muestra la entrada del último mes y el número de días de ese mes.

Siga a continuación el código

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

Si te gustó este blog, compártelo con tus amigos en Facebook y Facebook.

Nos encantaría saber de usted, háganos saber cómo podemos mejorar nuestro trabajo y hacerlo mejor para usted. Escríbanos a [email protected]