Liste og legge til dager med måneder i en angitt periode ved hjelp av VBA i Microsoft Excel

Anonim

I denne artikkelen vil vi lage en makro for å vise måneder mellom den definerte perioden og også antall dager i den aktuelle måneden. Det vil også vise totalt antall dager mellom den definerte perioden.

Vi har laget “DaysInPeriod” -makro for å vise måneder og antall dager i en måned. Makro kan kjøres ved å klikke på "Send" -knappen.

Før du kjører makroen, må du gi innspill for start- og sluttdato. Det tar verdien i celle "G6" som startdato og verdien i celle "G7" som sluttdato. Utdata vises nedenfor i "F9" -cellen.

Ved å klikke på send -knappen, vil makroen vise månedens navn i kolonne F og antall dager i den måneden i kolonne G. Den siste raden viser totalt antall dager mellom den angitte perioden.

Logisk forklaring

I makroen begynner vi looping fra startdato til den angitte sluttdatoen. Mens vi looper, sjekker vi etter den siste datoen i en måned. Hvis den siste datoen i en måned oppstår, vises månedsnavnet og antall dager i den måneden i kolonnene F og G. på samme måte, sjekker vi også etter sluttdato. Når sluttdato oppstår, vises oppføring for den siste måneden og antall dager i den måneden.

Følg koden nedenfor

 Alternativ Eksplisitt sub DaysInPeriod () Dim StartDate, EndDate As Date Dim intRow As Integer, intDays As Integer 'Clearing previous content Range ("F10: G1048576"). ClearContents' Start- og sluttdato StartDate = Range ("G6") EndDate = Område ("G7") 'Initialiserer variabelen til startradenummer intRow = 10' Viser måneder og antall dager fra startdato til sluttdato Gjør intDays = intDays + 1 'Kontrollerer siste måned i måneden eller når StartDate er lik til EndDate If (Month (StartDate) Month (StartDate + 1)) Eller StartDate = EndDate Deretter 'Setter du inn månedsnavnet Cells (intRow, 6) = Format (StartDate, "mmmm")' Setter inn antall dager i måneden Celler ( intRow, 7) = intDays 'Flytter til neste rad intRow = intRow + 1 intDays = 0 End If' Flytter til neste dato StartDate = StartDate + 1 loop til StartDate> EndDate 'Få summen i den siste raden Celler (intRow, 6) = "Totale dager" -celler (intRow, 7) = Application.Sum (Range ("G10: G" & intRow)) End Sub 

Hvis du likte denne bloggen, del den med vennene dine på Facebook. Du kan også følge oss på Twitter og Facebook.

Vi vil gjerne høre fra deg, gi oss beskjed om hvordan vi kan forbedre arbeidet vårt og gjøre det bedre for deg. Skriv til oss på e -post