Selles artiklis loome makro, et eraldada nädalapäevad kahe kuupäeva vahel.
Selles näites peame enne makro käivitamist määrama alguskuupäeva ja lõppkuupäeva. Makro valib alguskuupäeva väärtuse lahtrist J8 ja lõppkuupäeva väärtuse lahtrist J9. Pärast algus- ja lõppkuupäeva määramist saab makro käivitada, vajutades nuppu „Esita“ või vajutades kiirklahve Alt + F8.
Makro käivitamisel naaseb see uuele lehele nädalapäevad kahe kuupäeva vahel. Äsja lisatud tööleht sisaldab veerus A nädalapäevi, seejärel veerus B vastavat kuupäeva. Väljundkuupäev veerus B on vormingus pp.kk.aa.
Igale nädalale järgneb tühi rida kahe järjestikuse nädala eristamiseks.
Loogiline seletus
Makros oleme kasutanud nädalapäeva funktsiooni nädalapäevade ja nädalavahetuste eristamiseks. Vormindusfunktsiooni kasutatakse kuupäeva kuvamiseks nõutavas vormingus.
Nädalapäeva funktsioon
Funktsioon nädalapäev tagastab täispäeva väärtuse, mis tähistab nädalapäeva.
Süntaks
Nädalapäev (kuupäeva_väärtus, [esimene_päeva_nädal])
Kuupäeva_väärtus määrab kuupäeva väärtuse, mille kohta soovite nädalapäeva leida.
Esimene_nädal_nädal täpsustab, millist nädalapäeva peetakse nädala esimeseks päevaks. Sisendiks on täisarv või väärtus FirstDayOfWeek. Kui väärtust pole määratud, kasutatakse vaikimisi väärtust FirstDayOfWeek.Sunday.
Loenduse väärtus |
Täisarv |
Märkused |
FirstDayOfWeek.System |
0 |
Süsteemi seadetes on määratud nädala esimene päev |
FirstDayOfWeek.Sunday |
1 |
Pühapäev (vaikimisi) |
FirstDayOfWeek.Monday |
2 |
Esmaspäev |
FirstDayOfWeek.Tesday |
3 |
Teisipäev |
FirstDayOfWeek.Wednesday |
4 |
Kolmapäev |
FirstDayOfWeek.Thursday |
5 |
Neljapäev |
FirstDayOfWeek.Friday |
6 |
Reede |
FirstDayOfWeek.Saturday |
7 |
Laupäev |
Nagu makro koodist näha, oleme kasutanud nädalapäeva (i, 2), et määrata esmaspäev nädala esimeseks päevaks.
Vormindamise funktsioon
Funktsioon Vorming võtab sisendiks kuupäeva avaldise ja tagastab selle vormindatud stringina.
Funktsiooni Vorming süntaks
Vorming (kuupäeva_väärtus, vorming)
Kuupäeva_väärtus määrab kuupäeva andmetüübi väärtuse.
Vorming kasutab stringiväärtust, et määrata, millist tüüpi kuupäevavormingut on vaja.
Järgmine tabel määratleb mõned populaarsed märgid, mida saab kasutada vajaliku kuupäeva/kellaaja vormingu loomiseks:
Iseloom |
Kirjeldus |
d |
kuvab päeva numbrina ilma nullita (1–31) |
dd |
kuvab päeva numbrina eesmise nulliga (01–31) |
ddd |
kuvab päeva lühendina (pühapäev - la) |
dddd |
kuvab päeva täisnimena (pühapäev - laupäev) |
w |
kuvab nädalapäeva numbrina (1 pühapäevast kuni 7 laupäevani) |
ww |
kuvab aastanädala numbrina (1–54) |
m |
kuvab kuu numbrina ilma nullita (1–12) |
mm |
kuvab kuu numbrina eesmise nulliga (01–12) |
mmm |
kuvab kuu lühendina (jaanuar - detsember) |
mmmm |
kuvab kuu täiskuu nime all (jaanuar - detsember) |
q |
kuvab aasta kvartali numbrina (1–4) |
y |
kuvab aastapäeva numbrina (1–366) |
yy |
kuvab aasta kahekohalise numbrina (00–99) |
aaaa |
kuvab aasta neljakohalise numbrina (100–9999) |
h |
kuvab tunni numbrina ilma nullideta (0–23) |
hh |
kuvab tunde nullidena (00–23) |
n |
kuvab minuti arvuna ilma nullideta (0–59) |
nn |
kuvab minuti nullidena (00–59) |
s |
kuvab teise numbrina ilma nullideta (0–59) |
ss |
kuvab teise numbri eesolevate nullidega (00–59) |
Iga nädala lõpus tühja rea jätmiseks oleme kontrollinud nädalapäeva funktsiooni abil pühapäeviti ja suurendanud muutuja „StartingRow” väärtust 1 võrra, nii et järgmine rida jääb tühjaks.
Nagu makro koodist näha, oleme kasutanud funktsiooni Vorming kaks korda erineval viisil. Esiteks kasutasime nädalapäeva saamiseks vormingut (i, "pp") ja teiseks oleme kasutanud vormingut (i, "pp.kk.aa"), et saada kuupäev vormingus pp.kk.aaaa.
Koodi selgitus
Dim NewWorksheet kui tööleht
Set NewWorksheet = Töölehed. Lisa
Ülaltoodud koodi kasutatakse töölehe objekti nime deklareerimiseks „NewWorksheet“. Töölehed. Lisamismeetodit kasutatakse uue töölehe lisamiseks töölehtede kogusse. Set lauset kasutatakse deklareeritud objekti initsialiseerimiseks äsja sisestatud lehega.
Sest i = alguskuupäev kuni lõppkuupäev
Ahelat FOR kasutatakse silmusena alguskuupäevast kuni lõppkuupäevani.
Kui nädalapäev (i, 2) <6 Siis
IF -lauset kasutatakse tingimuse kontrollimiseks ja tingimuse alusel koodi täitmiseks. Ülaltoodud tingimus kontrollib väärtuse tagastamist nädalapäeva funktsiooni abil. Kui see on väiksem kui 6, tagastab IF tingimus tõene ja IF -lauses olev kood käivitub. Vastasel korral jäetakse see vahele.
Stardirida = 1
StartingRow = StartingRow + 1
Muutujat StartingRow kasutatakse töölehe ridade vahel liikumiseks. Alguses lähtestatakse muutuja esimesele reale. IF -lause iga eduka täitmise korral suurendatakse muutuja väärtust 1 võrra, liikudes lehe järgmisele reale.
Lahtrid (StartingRow, 1)
Lahtrite atribuuti kasutatakse töölehe konkreetsele lahtrile viitamiseks. Lahtreid (rea_arv, veeru_number) saab kasutada töölehe mis tahes lahtri viitamiseks, sisestades parameetriteks konkreetse rea numbri ja veeru numbri. Koodis Lahtrid (StartingRow, 1) määrab 1 esimese veeru ja muutuja „StartingRow” määratleb rea numbri.
Koodidest on lihtne aru saada, kuna olen makro juurde lisanud kommentaare koos koodidega.
Palun järgige koodi allpool
Valik Explicit Sub ExtractWeekdays () "Kuupäeva andmetüübi kahe muutuja deklareerimine Dim StartDate kui kuupäev, EndDate kui kuupäev" Töölehe muutuja deklareerimine Dim NewWorksheet kui tööleht Dim StartingRow, i As Long "Makro"). Vahemik ("J8"). Väärtus EndDate = Arvutustabelid ("Makro"). Vahemik ("J9"). Väärtus 'Väljundi algse rea numbri lähtestamine StartingRow = 1' Uue töölehe sisestamine Määra NewWorksheet = Töölehed. Lisage i = StartDate to EndDate 'Nädalapäeva meetodi abil saate kontrollida, kas see on nädalapäev või nädalapäev ja kui nädalapäev (i, 2) <6 Siis kuupäeva väärtuse NewWorksheet vormindamiseks kasutatakse vormindamismeetodit äsja sisestatud töölehele. StartingRow, 2) = Format (i, "dd.mm.yy") NewWorksheet.Cells (StartingRow, 1) = Format (i, "ddd") 'StartingRow muutuja väärtuse värskendamine järgmisele reale liikumiseks StartingRow = StartingRow + 1 End If 'Tühja rea sisestamine nädalavahetuseks Kui nädalapäev (i, 2) = 7 Siis StartingRow = StartingRow + 1 End kui N ext i Set NewWorksheet = Mitte midagi Lõpp Alam
Kui teile see blogi meeldis, jagage seda oma sõpradega Facebookis. Lisaks saate meid jälgida Twitteris ja Facebookis.
Tahaksime sinust kuulda, andke meile teada, kuidas saaksime oma tööd paremaks muuta ja teie jaoks paremaks muuta. Kirjuta meile meilisaidile