VBA savaitės diena | Žingsnis po žingsnio po savaitės funkciją VBA

„Excel VBA“ savaitės funkcija

Savaitės diena VBA yra datos ir laiko funkcija, naudojama nustatytos datos savaitės dienai nustatyti, jei ji yra įvestis. Ši funkcija grąžina sveiko skaičiaus reikšmę nuo 1 iki 7, šiai funkcijai yra pasirinktinis argumentas pirmąją savaitės dieną, tačiau jei nenurodome pirmosios savaitės dienos, funkcija pagal nutylėjimą laiko sekmadienį kaip pirmąją savaitės dieną.

Ar galime pasakyti savaitės dienos numerį žiūrėdami į konkrečią datą? Taip, mes galime pasakyti tos dienos dienos numerį, priklausomai nuo savaitės pradžios dienos. Įprastose darbalapio funkcijose mes turime funkciją, vadinamą WEEKDAY excel, kad galėtume nurodyti savaitės skaičių tam tikrai datai. VBA taip pat turime tą pačią funkciją, kad rastume tą patį dalyką.

Ką veikia savaitės funkcija?

Funkcija „savaitės diena“ grąžina nurodytą dienos dienos numerį per savaitę. Pvz., Jei turite datas nuo balandžio 1 d. Iki balandžio 7 d., Ir jei norite sužinoti datos datą balandžio 05 d., Jei savaitės pradžia yra nuo pirmadienio, tai yra 5 diena.

Norėdami tai rasti, mes turime tą pačią funkciją „Savaitės diena“ darbalapyje ir VBA. Žemiau pateikiama funkcijos sintaksė.

Data: Kuriai datai bandome rasti savaitės dieną. Tai turėtų būti tinkama data su tinkamu formatu.

[Pirmoji savaitės diena]: norėdami nustatyti nurodytos datos savaitės dieną, turime paminėti, kokia yra pirmoji savaitės diena. Pagal numatytuosius nustatymus VBA laiko „pirmadienį“ savaitės pradžios diena. Be to, mes galime pateikti ir toliau nurodytas dienas.

Pavyzdžiai

Šį „VBA WeekDay Function Excel“ šabloną galite atsisiųsti čia - „VBA WeekDay Function Excel“ šablonas

1 pavyzdys

Norėdami pradėti procesą, pirmiausia norėčiau pradėti nuo paprasto pavyzdžio. Dabar bandysime rasti savaitės dieną datai „2019 m. Balandžio 10 d.“.

1 veiksmas: apibrėžkite kintamąjį kaip eilutę

Kodas:

 Savaitės dienos_pavyzdys1 () Dim k As String End Sub 

2 žingsnis: priskirkite kintamajam vertę

Priskirkite reikšmę kintamajam „k“ pritaikydami WEEKDAY funkciją.

Kodas:

 Savaitės dienos_pavyzdys1 () Dim k As String k = Savaitės diena (End Sub 

3 žingsnis: Funkcijoje įveskite datą

Data, kurią čia bandome, yra „2019 m. Balandžio 10 d.“, Todėl praleiskite datą kaip „2019 m. Balandžio 10 d.“.

Kodas:

 Savaitės dienos_pavyzdys1 () Dim k As eilutė k = Savaitės diena („2019 m. Balandžio 10 d.“ Pabaigos dalis 

4 žingsnis: Rodyti kintamojo vertę „MsgBox“

Pagal numatytuosius nustatymus pirmoji savaitės diena laikoma „pirmadieniu“, todėl nepaisykite šios dalies. Uždarykite laikiklį. Kitoje eilutėje VBA pranešimų laukelyje parodykite kintamojo „k“ vertę.

Kodas:

 Savaitės dienos_pavyzdys1 () Dim k As eilutė k = Savaitės diena („2019 m. Balandžio 10 d.“) „MsgBox“ k Pabaiga 

Gerai, mes baigėme.

Jei paleisime kodą, rezultatas bus „4“, nes nuo sekmadienio nurodyta data (2019 m. Balandžio 10 d.) Patenka į 4-ąją savaitės dieną.

Pastaba: Mano sistemos pradinė savaitės diena yra „sekmadienis“.

Panašiai, jei pakeisite savaitės pradžios dieną, ji nuolat kinta. Žemiau yra to paties pavyzdžio eilutė.

Kodas:

k = savaitės diena ("2019 m. balandžio 10 d.", vbMonday) 'Tai grąžina 3 k = savaitės diena ("2019 m. balandžio 10 d.", vbTuesday) "Tai grąžina 2 k = savaitės diena (" 2019 m. balandžio 10 d. ", vbWednesday) 'Tai grąžina 1 k = savaitės diena ("2019 m. Balandžio 10 d.", VbThursday) "Tai grąžina 7 k = savaitės dieną (" 2019 m. Balandžio 10 d. ", VbFriday)". Tai grąžina 6 k = savaitės diena ("2019 m. Balandžio 10 d." ", vbSaturday) 'Tai grąžina 5 k = savaitės diena (" 2019 m. balandžio 10 d. ", vbSunday)" Tai pateikia 4 

2 pavyzdys - atvykite, ar data savaitgalį, ar ne

Tarkime, kad turite datą, kaip nurodyta toliau, ir norite rasti kitą savaitgalio datą, tada mes galime naudoti SAVAITĖS DIENĄ, kad gautume rezultatus.

Norint pasiekti rezultatą, turime naudoti SAVAITĖS DIENĄ su IF sąlyga ir kilpomis. Aš parašiau kodą, kad galėtumėte eiti eilutė po eilutės, kad gautumėte logiką.

Kodas:

 Sub Weekend_Dates () Dim k kaip sveikoji k = 2–9, jei savaitės diena (langeliai (k, 1). Vertė, vbMonday) = 1, tada ląstelės (k, 2). Vertė = ląstelės (k, 1) + 5 ElseIf savaitės diena (Ląstelės (k, 1). Vertė, vbMayday) = 2 Tada Ląstelės (k, 2). Vertė = Ląstelės (k, 1) + 4 ElseIf savaitės diena (Ląstelės (k, 1). Vertė, vbMonday) = 3 Tada Ląstelės (k, 2). Vertė = langeliai (k, 1) + 3 „ElseIf“ savaitės diena (langeliai (k, 1). vertė, vb pirmadienis) = 4 tada ląstelės (k, 2). vertė = ląstelės (k, 1) + 2 „ElseIf Weekday“ (langeliai (k, 1) .Value, vbMonday) = 5, tada ląstelės (k, 2). Vertė = ląstelės (k, 1) + 1 kitos ląstelės (k, 2). Vertė = "Tai iš tikrųjų yra savaitgalis Data "Pabaiga jei kita k Pabaiga sub 

Tai pasieks žemiau pateiktus rezultatus.

Pažvelkite į langelius B6 ir B7, kuriuos gavome kaip „Tai iš tikrųjų yra savaitgalio data“, nes „2019 m. Gegužės 4 d.“ Ir „2019 m. Balandžio 6 d.“ Datos yra savaitgalio datos, todėl nereikia rodyti savaitgalio datos savaitgalio datoms. Pagal numatytuosius nustatymus mes gauname tokį rezultatą.