VBA-arkipäivä - Vaiheittainen opas viikonpäivän toimintaan VBA: ssa

Sisällysluettelo

Excel VBA Weekday -toiminto

Viikkopäivä VBA: ssa on päivämäärä- ja aikatoiminto, jota käytetään tietyn päivämäärän viikonpäivän tunnistamiseen edellyttäen, että se syötetään, tämä funktio palauttaa kokonaisluvun arvon 1: stä 7: een, tähän toimintoon on valinnainen argumentti, joka on viikon ensimmäinen päivä, mutta jos emme anna viikon ensimmäistä päivää, toiminto olettaa sunnuntain oletusarvoisesti viikon ensimmäisenä päivänä.

Voimmeko kertoa viikonpäivän numeron katsomalla tiettyä päivämäärää? Kyllä, voimme kertoa kyseisen viikon päivänumeron viikon alkupäivästä riippuen. Säännöllisissä laskentataulukko-funktioissa meillä on Excel-funktio nimeltä WEEKDAY kertomaan tietyn päivämäärän viikon numero. Myös VBA: ssa meillä on sama tehtävä löytää sama asia.

Mitä viikonpäivän toiminto tekee?

Viikonpäivä-funktio palauttaa annetun päivän päivämäärän viikossa. Esimerkiksi, jos sinulla on päiviä 01 st huhtikuun 07 : nnen huhtikuussa ja jos haluat tietää päivä, jona 05 : nnen huhtikuussa sillä lähtö- viikonpäivä on maanantaista, se on 5 : nnen päivän.

Tämän löytämiseksi meillä on sama toiminto kuin “Weekday” -taulukossa sekä VBA: ssa. Alla on funktion syntaksit.

Päivämäärä: Mille päivämäärälle yritämme löytää viikonpäivän. Tämän pitäisi olla oikea päivämäärä ja oikea muoto.

(Viikon ensimmäinen päivä): Annetun päivämäärän viikonpäivän määrittämiseksi meidän on mainittava, mikä on viikon ensimmäinen päivä. Oletusarvoisesti VBA pitää maanantaina viikon alkamispäivää. Tämän lisäksi voimme toimittaa myös alla olevat päivät.

Esimerkkejä

Esimerkki 1

Haluan aloittaa menettelyn ensin yksinkertaisella esimerkillä. Yritämme nyt löytää viikonpäivä päivämäärälle “10.-huhtikuu-2019”.

Vaihe 1: Määritä muuttuja merkkijonoksi

Koodi:

Alaviikonpäivä_esimerkki1 () Himmennä merkkijonon lopussa Alim
Vaihe 2: Määritä muuttujalle arvo

Määritä arvo muuttujalle “k” soveltamalla WEEKDAY-toimintoa.

Koodi:

Alaviikonpäivä_esimerkki1 () Himmennä merkkijono k = Viikonpäivä (Lopeta alim
Vaihe 3: Syötä päivämäärä toimintoon

Testattava päivämäärä on “10-huhtikuu-2019”, joten välitä päivämäärä “10-huhtikuu-2019”.

Koodi:

Alaviikonpäivä_esimerkki1 () Himmennä merkkijono k = Viikkopäivä ("10.4.2019" loppu
Vaihe 4: Näytä muuttujan arvo MsgBoxissa

Oletusarvoisesti viikon ensimmäinen päivä on "maanantai", joten ohita tämä osa. Sulje kiinnike. Seuraava rivi näyttää muuttujan “k” arvon VBA-sanomaruudussa.

Koodi:

Alaviikonpäivä_esimerkki1 () Himmennä merkkijono k = Viikkopäivä ("10.4.2019") MsgBox k Loppu

Ok, olemme valmiit.

Jos me suorittaa koodia, saamme tuloksen ”4”, koska alkaen sunnuntaina edellyttäen päiväys (10-Apr-2019) kuuluu myös 4 : nnen viikonpäivä.

Huomaa: Järjestelmieni viikon alkamispäivä on “sunnuntai”.

Vastaavasti, jos muutat viikon aloituspäivää, se vaihtelee jatkuvasti. Alla on esimerkkiviiva samalle.

Koodi:

k = Weekday ("10-Apr-2019", vbMonday) 'Tämä palauttaa 3 k = Weekday ("10-Apr-2019", vbTuesday)' Tämä palauttaa 2 k = Weekday ("10-Apr-2019", vbWednesday) 'Tämä palauttaa 1 k = viikonpäivä ("10-huhtikuu-2019", vbThursday)' Tämä palauttaa 7 k = viikonpäivä ("10-huhtikuu-2019", vbFriday) "Tämä palauttaa 6 k = viikonpäivä (" 10-huhtikuu-2019 ", vbSaturday) 'Tämä palauttaa 5 k = viikonpäivä (" 10-Apr-2019 ", vbSunday)' Tämä palauttaa 4

Esimerkki # 2 - saapuuko päivämäärä viikonloppuna vai ei

Oletetaan, että sinulla on alla olevan kaltainen päivämäärä ja haluat löytää seuraavan viikonlopun päivämäärän, voimme käyttää WEEKDAY-toimintoa tuloksiin pääsemiseksi.

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.

Katso solut B6 ja B7. Saimme tuloksen "Tämä on itse asiassa viikonlopun päivämäärä", koska päivämäärät "04-toukokuu-2019" ja "06-huhtikuu-2019" ovat itse asiassa viikonlopun päivämääriä, joten viikonloppupäiviä ei tarvitse näyttää viikonloppupäivinä. Oletuksena saamme tuloksen näin.

Mielenkiintoisia artikkeleita...