Tässä artikkelissa luomme makron luomaan taulukon kullekin viikonpäivälle tietyn vuoden tiettyä kuukautta lukuun ottamatta kaikkia lomalistassa määritettyjä päivämääriä.
Ennen makron suorittamista vaaditaan kolme tuloa. Meidän on määritettävä kuukauden numero solussa J10, vuosi solussa J11 ja määritettävä lomapäiväluettelo alueella B16: B26.
Kun olet määrittänyt syöttöarvot, suorita makro napsauttamalla Lähetä -painiketta.
Tämä makro lisää uuden taulukon kullekin viikonpäivälle tiettyä kuukautta lukuun ottamatta lomaluettelossa määritettyjä päivämääriä.
Looginen selitys
Tässä makrossa olemme käyttäneet DateSerial -funktiota määritetyn kuukauden viimeisen päivämäärän löytämiseen. Olemme käyttäneet FOR Loop -silmukkaa kuukauden alkamispäivästä kuukauden viimeiseen päivämäärään. Olemme käyttäneet Etsi -toimintoa selvittääksemme, onko käytetty päivämäärä määritetyssä lomaluettelossa.
Viikonpäivätoimintoa käytetään yhdessä If -lausekkeen kanssa sen tarkistamiseksi, onko päivämäärä arkipäivä vai viikonloppu. If -lausunto lisää uuden taulukon vain, jos päivämäärä on arkipäivä eikä sitä ole lomalistalla. Kuten yllä olevasta kuvakaappauksesta näkyy, arkki 6th Joulukuu ei ole luotu, koska 6th Joulukuu on lomalistalla.
Seuraa koodia alla
Vaihtoehto Explicit Sub MonthApply () 'Ilmoittavat muuttujat Dim DV Muuttuva päivämääränä Dim Rng Etsi alueena Dim MonthNo, YearNo Kokonaislukuna Dim StartDate, EndDate as Date' Näytön päivitysten poistaminen käytöstä Application.ScreenUpdating = False With Sheets ("Main") 'Kuukauden ja vuosi solusta J10 ja J11 "Main" -arkista = DateSerial (YearNo, MonthNo + 1, 0) 'Kaikkien määritetyn kuukauden päivämäärien selaaminen DVariable = StartDate To EndDate' Selvitys, onko päivämäärä merkitty lomalle Aseta RngFind = .Range ("B16: B26"). Etsi ( DVariable) 'Tarkista, onko päivämäärä loma-, viikonloppu- tai arkipäivä Jos RngFind ei ole mitään ja arkipäivää (DVariable, 2) <6 Sitten' Lisää uusi arkki työkirjan laskentataulukon viimeisen laskentataulukon jälkeen.Lisää jälkeen: = laskentataulukot (laskentataulukot Aktiivisen taulukon nimeäminen uudelleen ActiveSheet.Name = Muoto (DV muuttuva, "pp.kk.vv") Lopeta, jos seuraava DVmuuttuja .Valitse Loppu W ith Application.ScreenUpdating = Todellinen loppuosa
Jos pidit tästä blogista, jaa se ystävillesi Facebookissa. Voit myös seurata meitä Twitterissä ja Facebookissa.
Haluaisimme kuulla sinusta, kerro meille, kuinka voimme parantaa työtämme ja parantaa sitä sinulle. Kirjoita meille sähköpostitse