In questo articolo, creeremo una macro per elencare i mesi tra il periodo definito e anche il numero di giorni in quel particolare mese. Verrà inoltre visualizzato il numero totale di giorni tra il periodo definito.

Abbiamo creato la macro “DaysInPeriod” per elencare i mesi e il numero di giorni in un mese. La macro può essere eseguita facendo clic sul pulsante “Invia”.

Prima di eseguire la macro, è necessario fornire input per la data di inizio e di fine. Prende il valore nella cella “G6” come data di inizio e il valore nella cella “G7” come data di fine. L’output verrà visualizzato sotto nella cella “F9”.

RawInput

Facendo clic sul pulsante di invio, la macro visualizzerà il nome del mese nella colonna F e il numero di giorni in quel mese nella colonna G. L’ultima riga mostrerà il numero totale di giorni tra il periodo specificato.

AfterRunningMacro

Spiegazione logica

Nella macro, iniziamo a scorrere dalla data di inizio alla data di fine specificata. Durante il loop, controlliamo l’ultima data di un mese. Se viene rilevata l’ultima data di un mese, il nome del mese e il numero di giorni in quel mese vengono visualizzati nelle colonne F e G. Allo stesso modo, controlliamo anche la data di fine. Quando viene rilevata la data di fine, viene visualizzata la voce per l’ultimo mese e il numero di giorni in quel mese.

Segui sotto per il codice

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

Se ti è piaciuto questo blog, condividilo con i tuoi amici su Facebook e Facebook.

Ci piacerebbe sentire la tua opinione, facci sapere come possiamo migliorare il nostro lavoro e renderlo migliore per te. Scrivici a [email protected]