W tym artykule stworzymy makro wyświetlające miesiące pomiędzy zdefiniowanym okresem, a także liczbę dni w danym miesiącu. Wyświetli również całkowitą liczbę dni między zdefiniowanym okresem.
Stworzyliśmy makro „DaysInPeriod” do listy miesięcy i liczby dni w miesiącu. Makro można wykonać, klikając przycisk „Prześlij”.
Przed uruchomieniem makra należy wprowadzić datę rozpoczęcia i zakończenia. Pobiera wartość w komórce „G6” jako datę początkową i wartość w komórce „G7” jako datę końcową. Dane wyjściowe zostaną wyświetlone poniżej w komórce „F9”.
Po kliknięciu przycisku Prześlij makro wyświetli nazwę miesiąca w kolumnie F i liczbę dni w tym miesiącu w kolumnie G. Ostatni wiersz pokaże całkowitą liczbę dni pomiędzy podanym okresem.
Wyjaśnienie logiczne
W makrze zaczynamy pętlę od daty początkowej do określonej daty końcowej. Podczas pętli sprawdzamy ostatni dzień miesiąca. Jeśli zostanie napotkana ostatnia data miesiąca, to nazwa miesiąca i liczba dni w tym miesiącu jest wyświetlana w kolumnach F i G. Podobnie sprawdzamy również datę końcową. Po napotkaniu daty końcowej wyświetlany jest wpis dotyczący ostatniego miesiąca i liczba dni w tym miesiącu.
Proszę postępować zgodnie z poniższym kodem!
Option Explicit Sub DaysInPeriod() Dim StartDate, EndDate As Date Dim intRow As Integer, intDays As Integer 'Usuwanie poprzedniej zawartości Range("F10:G1048576").ClearContents 'Pobieranie daty rozpoczęcia i zakończenia StartDate = Range("G6") EndDate = Range("G7") 'Inicjowanie zmiennej do początkowego numeru wiersza intRow = 10 'Wyświetlanie miesięcy i liczby dni od daty początkowej do daty końcowej Do intDays = intDays + 1 'Sprawdzanie ostatniej daty miesiąca lub kiedy DataRozpoczęcia jest równa to EndDate If (Month(StartDate) Month(StartDate + 1)) Or StartDate = EndDate Then 'Wstawianie nazwy miesiąca Cells(intRow, 6) = Format(StartDate, "mmmm") 'Wstawianie liczby dni w miesiącu Cells( intRow, 7) = intDays 'Przejście do następnego wiersza intRow = intRow + 1 intDays = 0 End If 'Przejście do następnej daty StartDate = StartDate + 1 pętla do StartDate > EndDate 'Pobieranie sumy w ostatnim wierszu Cells(intRow, 6) = "Całkowita liczba dni" Cells(intRow, 7) = Application.Sum(Range("G10:G" & intRow)) End Sub
Jeśli podobał Ci się ten blog, podziel się nim ze znajomymi na Facebooku. Możesz również śledzić nas na Twitterze i Facebooku.
Chcielibyśmy usłyszeć od Ciebie, daj nam znać, jak możemy poprawić naszą pracę i uczynić ją lepszą dla Ciebie. Napisz do nas na stronie e-mail