Excel VBA-Wochentagsfunktion
Wochentag in VBA ist eine Datums- und Uhrzeitfunktion , mit der der Wochentag eines bestimmten Datums als Eingabe identifiziert wird. Diese Funktion gibt einen ganzzahligen Wert zwischen 1 und 7 zurück. Für diese Funktion wird ein optionales Argument bereitgestellt Erster Wochentag. Wenn wir jedoch nicht den ersten Wochentag angeben, geht die Funktion standardmäßig von Sonntag als erstem Wochentag aus.
Können wir die Wochentagsnummer anhand eines bestimmten Datums ermitteln? Ja, wir können die Tagesnummer dieser Woche abhängig vom Starttag der Woche angeben. In regulären Arbeitsblattfunktionen haben wir eine Funktion namens WEEKDAY in Excel, um die Nummer der Woche für ein bestimmtes Datum anzugeben. Auch in VBA haben wir dieselbe Funktion, um dasselbe zu finden.

Was macht die Wochentagsfunktion?
Die Wochentagsfunktion gibt die Nummer des angegebenen Datums in der Woche zurück. Zum Beispiel, wenn Sie Termine 01 haben st April bis 07 th April und wenn Sie den Tag des Datums 05 wissen wollen th April , wenn der Starttag der Woche von Montag ist, ist es die 5 th Tag.
Um dies zu finden, haben wir die gleiche Funktion wie "Wochentag" in einem Arbeitsblatt sowie in VBA. Unten ist die Syntax der Funktion.

Datum: Für welches Datum versuchen wir den Wochentag zu finden. Dies sollte ein korrektes Datum mit dem richtigen Format sein.
(Erster Wochentag): Um den Wochentag des angegebenen Datums zu bestimmen , müssen wir den ersten Wochentag angeben. Standardmäßig betrachtet VBA "Montag" als Starttag der Woche. Abgesehen davon können wir auch die folgenden Tage liefern.

Beispiele
Beispiel 1
Lassen Sie mich zunächst mit einem einfachen Beispiel beginnen. Jetzt werden wir versuchen, den Wochentag für das Datum „10. April 2019“ zu finden.
Schritt 1: Definieren Sie die Variable als String
Code:
Sub Weekday_Example1 () Dim k As String End Sub

Schritt 2: Weisen Sie der Variablen einen Wert zu
Weisen Sie den Wert der Variablen „k“ zu, indem Sie die Funktion WEEKDAY anwenden.
Code:
Sub Weekday_Example1 () Dim k As String k = Wochentag (End Sub

Schritt 3: Geben Sie das Datum in die Funktion ein
Das Datum, das wir hier testen, ist "10-Apr-2019". Geben Sie das Datum daher als "10-Apr-2019" ein.
Code:
Sub Weekday_Example1 () Dim k As String k = Wochentag ("10-Apr-2019" End Sub

Schritt 4: Wert der Variablen in MsgBox anzeigen
Standardmäßig wird der erste Tag der Woche als "Montag" verwendet. Ignorieren Sie diesen Teil. Schließen Sie die Halterung. Die nächste Zeile zeigt den Wert der Variablen "k" im VBA-Meldungsfeld.
Code:
Sub Weekday_Example1 () Dim k As String k = Wochentag ("10-Apr-2019") MsgBox k End Sub

Ok, wir sind fertig.
Wenn wir den Code ausführen, werden wir das Ergebnis als „4“ erhalten , weil von Sonntag beginnen, das angegebene Datum (10-Apr-2019) fällt auf den 4 - ten Tag der Woche.
Hinweis: Der Wochentag meines Systems ist "Sonntag".
Similarly, if you change the start day of the week, it keeps varying. Below is an example line for the same.
Code:
k = Weekday("10-Apr-2019", vbMonday) ‘This returns 3 k = Weekday("10-Apr-2019", vbTuesday) ‘This returns 2 k = Weekday("10-Apr-2019", vbWednesday) ‘This returns 1 k = Weekday("10-Apr-2019", vbThursday) ‘This returns 7 k = Weekday("10-Apr-2019", vbFriday) ‘This returns 6 k = Weekday("10-Apr-2019", vbSaturday) ‘This returns 5 k = Weekday("10-Apr-2019", vbSunday) ‘This returns 4
Example #2 - Arrive Whether the Date is on Weekend or Not
Assume you have a date like the below, and you want to find the next weekend date, then we can use the WEEKDAY function to arrive at the results.

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.

Schauen Sie sich die Zellen B6 und B7 an. Wir haben das Ergebnis als "Dies ist tatsächlich das Wochenenddatum" erhalten, da die Daten "04-Mai-2019" und "06-Apr-2019" tatsächlich Wochenenddaten sind, sodass das Wochenenddatum für Wochenenddaten nicht angezeigt werden muss. Standardmäßig erhalten wir das Ergebnis wie folgt.