Dzień tygodnia VBA

Funkcja dnia tygodnia Excel VBA

Dzień tygodnia w VBA to funkcja daty i godziny, która służy do identyfikowania dnia tygodnia danej daty, pod warunkiem, że jest to dane wejściowe, funkcja zwraca wartość całkowitą z zakresu od 1 do 7, jest opcjonalny argument dostarczony do tej funkcji, którym jest pierwszy dzień tygodnia, ale jeśli nie podamy pierwszego dnia tygodnia, funkcja domyślnie przyjmie niedzielę jako pierwszy dzień tygodnia.

Czy możemy określić numer dnia tygodnia, patrząc na konkretną datę? Tak, możemy podać numer dnia w tym tygodniu w zależności od pierwszego dnia tygodnia. W zwykłych funkcjach arkusza mamy w programie Excel funkcję o nazwie DZIEŃ.TYG., Która podaje numer tygodnia dla określonej daty. W VBA również mamy tę samą funkcję, aby znaleźć to samo.

Co robi funkcja dnia tygodnia?

Funkcja Weekday zwraca numer dnia tygodnia z podanej daty. Na przykład, jeśli masz daty od 1 kwietnia do 7 kwietnia i chcesz poznać dzień 5 kwietnia, jeśli pierwszy dzień tygodnia przypada od poniedziałku, jest to dzień piąty.

Aby to znaleźć, mamy taką samą funkcję „Dzień tygodnia” w arkuszu, jak iw VBA. Poniżej znajduje się składnia funkcji.

Data: dla którego dnia próbujemy znaleźć dzień tygodnia. Powinna to być właściwa data z prawidłowym formatem.

[Pierwszy dzień tygodnia]: Aby określić dzień tygodnia podanej Daty , należy podać, jaki jest pierwszy dzień tygodnia. Domyślnie VBA traktuje „poniedziałek” jako dzień początkowy tygodnia. Oprócz tego możemy dostarczyć również poniższe dni.

Przykłady

Możesz pobrać ten szablon programu Excel z funkcją VBA WeekDay tutaj - Szablon programu Excel z funkcją VBA WeekDay

Przykład 1

Aby rozpocząć postępowanie, zacznę od prostego przykładu. Teraz spróbujemy znaleźć dzień tygodnia dla daty „10-kwiecień-2019”.

Krok 1: Zdefiniuj zmienną jako ciąg

Kod:

 Sub Weekday_Example1 () Dim k As String End Sub 

Krok 2: Przypisz wartość do zmiennej

Przypisz wartość do zmiennej „k”, stosując funkcję WEEKDAY.

Kod:

 Sub Weekday_Example1 () Dim k As String k = Weekday (End Sub 

Krok 3: Wprowadź datę w funkcji

Data, którą tutaj testujemy to „10-kwiecień-2019”, więc podaj datę „10-kwiecień-2019”.

Kod:

 Sub Weekday_Example1 () Dim k As String k = Weekday ("10-kwiecień-2019" End Sub 

Krok 4: Pokaż wartość zmiennej w MsgBox

Domyślnie pierwszy dzień tygodnia to „poniedziałek”, więc zignoruj ​​tę część. Zamknij wspornik. W następnym wierszu pokaż wartość zmiennej „k” w oknie komunikatu VBA.

Kod:

 Sub Weekday_Example1 () Dim k As String k = Weekday („10-Apr-2019”) MsgBox k End Sub 

OK, gotowe.

Jeśli uruchomimy kod, otrzymamy wynik jako „4”, ponieważ od niedzieli podana data (10.04.2019 r.) Przypada na 4 dzień tygodnia.

Uwaga: Dniem rozpoczęcia tygodnia w moim systemie jest „Niedziela”.

Podobnie, jeśli zmienisz dzień rozpoczęcia tygodnia, będzie się on zmieniał. Poniżej znajduje się przykładowa linia dla tego samego.

Kod:

k = Weekday ("10-Apr-2019", vbMonday) 'Zwraca 3 k = Weekday ("10-Apr-2019", vbTuesday)' Zwraca 2 k = Weekday ("10-Apr-2019", vbWed Wednesday) 'Zwraca 1 k = Weekday ("10-Apr-2019", vbTh Thursday) "Zwraca 7 k = Weekday (" 10-Apr-2019 ", vbFriday)" Zwraca 6 k = Weekday ("10-Apr-2019 ", vbSaturday) 'Zwraca 5 k = Weekday (" 10-Apr-2019 ", vbSunday)' Zwraca 4 

Przykład nr 2 - Przybądź, czy data jest w weekend, czy nie

Załóżmy, że masz datę taką jak poniżej i chcesz znaleźć datę na następny weekend, a następnie możemy użyć funkcji WEEKDAY, aby uzyskać wyniki.

Aby otrzymać wynik, musimy użyć WEEKDAY z warunkiem IF i pętlami. Napisałem kod, abyś przechodził wiersz po wierszu, aby uzyskać logikę.

Kod:

 Sub Weekend_Dates () Dim k As Integer For k = 2 to 9 If Weekday (Cells (k, 1) .Value, vbMonday) = 1 Then Cells (k, 2) .Value = Cells (k, 1) + 5 ElseIf Weekday (Cells (k, 1) .Value, vbMonday) = 2 Then Cells (k, 2) .Value = Cells (k, 1) + 4 ElseIf Weekday (Cells (k, 1) .Value, vbMonday) = 3 Then Cells (k, 2) .Value = Cells (k, 1) + 3 ElseIf Weekday (Cells (k, 1) .Value, vbMonday) = 4 Then Cells (k, 2) .Value = Cells (k, 1) + 2 ElseIf Weekday (Cells (k, 1) .Value, vbMonday) = 5 Then Cells (k, 2) .Value = Cells (k, 1) + 1 Else Cells (k, 2) .Value = "To jest faktycznie weekend Data „Koniec, jeśli następny k Koniec Sub 

To doprowadzi do poniższych wyników.

Spójrz na komórki B6 i B7, które otrzymaliśmy jako „To jest faktycznie data weekendu”, ponieważ daty „04-maj-2019” i „06-kwiecień-2019” są w rzeczywistości datami weekendu, więc nie ma potrzeby pokazywania daty weekendu na weekendy. Domyślnie otrzymujemy taki wynik.