VBA Weekday

Excel VBA Weekday-funktion

Veckodag i VBA är en datum- och tidsfunktion som används för att identifiera veckodagen för ett visst datum förutsatt att det är en inmatning, den här funktionen returnerar ett heltal från 1 till 7-intervallet, det finns ett valfritt argument för denna funktion som första veckodagen men om vi inte tillhandahåller den första veckodagen antar funktionen som söndag som första veckodag som standard.

Kan vi berätta veckodagens nummer genom att titta på ett visst datum? Ja, vi kan berätta dagnumret den veckan beroende på veckans startdag. I vanliga kalkylfunktioner har vi en funktion som heter WEEKDAY i excel för att ange veckans nummer för ett visst datum. Även i VBA har vi samma funktion för att hitta samma sak.

Vad gör Weekday Function?

Veckodagsfunktionen returnerar det angivna datumets dagnummer i veckan. Till exempel, om du har datum 1 april till 7 april och om du vill veta dagen för datumet 05 april om veckans startdag är från måndag är det den 5: e dagen.

För att hitta detta har vi samma funktion "Veckodag" i ett kalkylblad såväl som i VBA. Nedan visas funktionens syntax.

Datum: För vilket datum vi försöker hitta veckodagen. Detta borde vara ett korrekt datum med rätt format.

[Första veckodagen ]: För att bestämma veckodagen för det angivna datumet måste vi nämna vad som är den första dagen i veckan. Som standard anser VBA "måndag" som veckans startdag. Bortsett från detta kan vi också leverera nedanstående dagar.

Exempel

Du kan ladda ner denna VBA WeekDay-funktion Excel-mall här - VBA WeekDay-funktion Excel-mall

Exempel nr 1

För att inleda förfarandet, låt mig börja med ett enkelt exempel först. Nu ska vi försöka hitta veckodagen för datumet "10 april-2019".

Steg 1: Definiera variabeln som sträng

Koda:

 Sub Weekday_Example1 () Dim k As String End Sub 

Steg 2: Tilldela variabeln värde

Tilldela värdet till variabeln "k" genom att använda WEEKDAY-funktionen.

Koda:

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

Steg 3: Ange datum i funktion

Datumet vi testar här är "10-apr-2019", så skicka datumet som "10-apr-2019".

Koda:

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

Steg 4: Visa variabelvärde i MsgBox

Som standard tar den första dagen i veckan som "måndag", så ignorera den här delen. Stäng fästet. I nästa rad visar värdet på variabeln “k” i VBA-meddelanderutan.

Koda:

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

Okej, vi är klara.

Om vi ​​kör koden får vi resultatet som ”4” eftersom från och med söndagen det angivna datumet (10-apr-2019) faller på den fjärde dagen i veckan.

Obs: Mitt systems startdag i veckan är "söndag".

På samma sätt, om du ändrar veckodagens startdag fortsätter det att variera. Nedan följer en exempelrad för samma.

Koda:

k = Weekday ("10-Apr-2019", vbMonday) 'Detta returnerar 3 k = Weekday ("10-Apr-2019", vbTuesday)' Detta returnerar 2 k = Weekday ("10-Apr-2019", vbWednesday) 'Detta returnerar 1 k = Veckodag ("10-Apr-2019", vbThursday)' Detta returnerar 7 k = Veckodag ("10-Apr-2019", vbFriday) 'Detta returnerar 6 k = Veckodag ("10-Apr-2019 ", vbSaturday) 'Detta returnerar 5 k = Veckodag (" 10-apr-2019 ", vbSunday)' Detta returnerar 4 

Exempel # 2 - Anländer om datumet är i helgen eller inte

Antag att du har ett datum som nedan och att du vill hitta nästa helgdatum så kan vi använda WEEKDAY-funktionen för att nå resultaten.

Vi måste använda WEEKDAY med IF-tillstånd och loopar för att nå resultatet. Jag har skrivit koden för att du ska gå rad för rad för att få logiken.

Koda:

 Sub Weekend_Dates () Dim k som heltal För k = 2 till 9 Om veckodag (celler (k, 1). Värde, vbMonday) = 1 Sedan celler (k, 2). Värde = celler (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 = "Det här är faktiskt helgen Datum "Slut om nästa k Slut Sub 

Detta kommer fram till resultaten nedan.

Titta på cellerna B6 & B7 vi fick resultatet som "Detta är faktiskt helgedatumet" eftersom datum "04-maj-2019" och "06-apr-2019" är faktiskt helgdatum, så inget behov av att visa helgedatumet för helgdatum. Som standard får vi resultatet som detta.