Dzień tygodnia VBA - Przewodnik krok po kroku do funkcji dni powszednich w języku VBA

Funkcja Excel VBA Weekday

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, ta 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. Również w VBA mamy tę samą funkcję, aby znaleźć to samo.

Co robi funkcja dnia tygodnia?

Funkcja dnia tygodnia zwraca numer dnia tygodnia z podanej daty. Na przykład, jeśli masz termin 01 st kwietnia do 07 th kwietnia, a jeśli chcesz wiedzieć dzień dzień 05 th kwietnia jeżeli począwszy dni tygodnia od poniedziałku, to 5 th dni.

Aby to znaleźć, mamy taką samą funkcję jak „Dzień tygodnia” w arkuszu, a także w 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, musimy wspomnieć, 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

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. Następny wiersz pokazuje 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 mamy uruchomić kod, otrzymamy wynik jako „4”, ponieważ począwszy od niedzieli, pod warunkiem, data (10-kwi-2019) przypada na 4 th dzień tygodnia.

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

Podobnie, jeśli zmienisz dzień początku 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 # 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.

We need to use WEEKDAY with IF condition and loops to arrive at the result. I have written the code for you to go line by line to get the logic.

Code:

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 = "This is actually the weekend Date" End If Next k End Sub

This will arrive at the results below.

Spójrz na komórki B6 i B7. Otrzymaliśmy wynik jako „To właściwie data weekendu”, ponieważ daty „04-maj-2019” i „06-kwiecień-2019” są w rzeczywistości datami weekendowymi, więc nie ma potrzeby pokazywania daty weekendu dla dat weekendowych. Domyślnie otrzymujemy taki wynik.

Interesujące artykuły...