VBA Weekdag

Excel VBA Weekdag-functie

Weekdag in VBA is een datum- en tijdfunctie die wordt gebruikt om de weekdag van een bepaalde datum te identificeren, mits deze als invoer is, deze functie retourneert een geheel getal van 1 tot 7 bereik, er is een optioneel argument voor deze functie die de eerste dag van de week, maar als we de eerste dag van de week niet opgeven, gaat de functie er standaard van uit dat zondag de eerste dag van de week is.

Kunnen we het weekdagnummer zien door naar een bepaalde datum te kijken? Ja, we kunnen het dagnummer die week aangeven, afhankelijk van de begindag van de week. In normale werkbladfuncties hebben we een functie genaamd WEEKDAY in Excel om het nummer van de week voor een bepaalde datum te vertellen. Ook in VBA hebben we dezelfde functie om hetzelfde te vinden.

Wat doet Weekday Function?

Weekday-functie retourneert het dagnummer van de opgegeven datum in de week. Als u bijvoorbeeld de datums 1 april tot 7 april hebt en als u de dag van de datum 5 april wilt weten als de begindag van de week een maandag is, is dit de 5e dag.

Om dit te vinden hebben we dezelfde functie “Weekdag” zowel in een werkblad als in VBA. Hieronder staat de syntaxis van de functie.

Datum: voor welke datum we proberen de weekdag te vinden. Dit moet een juiste datum zijn met het juiste formaat.

[Eerste dag van de week]: Om de weekdag van de opgegeven datum te bepalen , moeten we vermelden wat de eerste dag van de week is. VBA beschouwt 'maandag' standaard als de begindag van de week. Daarnaast kunnen wij ook onderstaande dagen leveren.

Voorbeelden

U kunt deze VBA WeekDay-functie Excel-sjabloon hier downloaden - VBA WeekDay-functie Excel-sjabloon

Voorbeeld 1

Om de procedure te starten, wil ik eerst beginnen met een eenvoudig voorbeeld. Nu gaan we proberen de weekdag te vinden voor de datum "10-april-2019".

Stap 1: definieer de variabele als String

Code:

 Sub Weekday_Example1 () Dim k As String End Sub 

Stap 2: Wijs waarde toe aan de variabele

Wijs de waarde toe aan de variabele "k" door de WEEKDAY-functie toe te passen.

Code:

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

Stap 3: Voer de datum in bij Functie

De datum die we hier testen is "10-apr-2019", dus geef de datum door als "10-apr-2019".

Code:

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

Stap 4: toon de waarde van de variabele in MsgBox

Standaard wordt de eerste dag van de week als "maandag" beschouwd, dus negeer dit gedeelte. Sluit de beugel. Toon in de volgende regel de waarde van variabele "k" in het VBA-berichtvenster.

Code:

 Sub Weekday_Example1 () Dim k As String k = Weekday ("10-apr-2019") MsgBox k End Sub 

Ok, we zijn klaar.

Als we de code uitvoeren, krijgen we het resultaat als "4" omdat vanaf zondag de opgegeven datum (10-apr-2019) op de 4e dag van de week valt.

Opmerking: de startdag van de week op mijn systeem is “zondag”.

Evenzo, als u de startdag van de week wijzigt, blijft deze variëren. Hieronder is een voorbeeldregel voor hetzelfde.

Code:

k = Weekday ("10-apr-2019", vbMonday) 'Dit geeft als resultaat 3 k = Weekday ("10-apr-2019", vbTuesday)' Dit retourneert 2 k = Weekday ("10-apr-2019", vbWed Wednesday) 'Dit retourneert 1 k = Weekday ("10-apr-2019", vbThursday)' Dit retourneert 7 k = Weekday ("10-apr-2019", vbFriday) 'Dit retourneert 6 k = Weekday ("10-apr-2019) ", vbSaturday) 'Dit retourneert 5 k = Weekday (" 10-apr-2019 ", vbSunday)' Dit retourneert 4 

Voorbeeld # 2 - Aankomen of de datum in het weekend is of niet

Stel dat u een datum zoals hieronder heeft en u wilt de volgende weekenddatum vinden, dan kunnen we de WEEKDAY-functie gebruiken om tot de resultaten te komen.

We moeten WEEKDAY gebruiken met ALS-voorwaarde en -lussen om tot het resultaat te komen. Ik heb de code voor je geschreven om regel voor regel de logica te krijgen.

Code:

 Sub Weekend_Dates () Dim k As Integer For k = 2 tot 9 If Weekday (Cells (k, 1) .Value, vbMonday) = 1 Then Cells (k, 2) .Value = Cells (k, 1) + 5 ElseIf Weekday (Cellen (k, 1) .Value, vbMonday) = 2 Dan Cellen (k, 2) .Value = Cellen (k, 1) + 4 ElseIf Weekdag (Cellen (k, 1) .Value, vbMonday) = 3 Dan Cellen (k, 2) .Value = Cellen (k, 1) + 3 Anders Weekdag (Cellen (k, 1) .Value, vbMonday) = 4 Dan Cellen (k, 2) .Value = Cellen (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 = "Dit is eigenlijk het weekend Datum "End If Next k End Sub 

Dit komt tot de onderstaande resultaten.

Kijk naar de cellen B6 en B7, we kregen het resultaat als "Dit is eigenlijk de weekenddatum" omdat de datums "04-mei-2019" en "06-april-2019" eigenlijk weekenddata zijn, dus het is niet nodig om de weekenddatum te tonen voor weekenddata. Standaard krijgen we het resultaat als volgt.