Kreirajte dnevne listove u mjesecu bez vikenda i praznika koristeći VBA

Anonim

U ovom ćemo članku stvoriti makronaredbu za izradu lista za svaki radni dan za navedeni mjesec navedene godine isključujući sve datume navedene na popisu praznika.

Prije izvođenja makronaredbe potrebna su tri ulaza. Moramo navesti broj mjeseca u ćeliji J10, godinu u ćeliji J11 i navesti popis datuma praznika u rasponu B16: B26.

Nakon što navedete ulazne vrijednosti, kliknite gumb za slanje za pokretanje makronaredbe.

Ova makronaredba umetnut će novi list za svaki radni dan za navedeni mjesec, isključujući datume navedene na popisu praznika.

Logično objašnjenje

U ovom smo makronu koristili funkciju DateSerial za pronalaženje posljednjeg datuma navedenog mjeseca. Koristili smo FOR Loop za petlju od datuma početka mjeseca do zadnjeg datuma u mjesecu. Upotrijebili smo funkciju Find da pronađemo postoji li datum na navedenom popisu praznika.

Funkcija radni dan koristi se zajedno s naredbom If za provjeru je li datum radni dan ili vikend. Ako će izjava umetnuti novi list samo ako je datum radni dan i ne postoji na popisu praznika. Kao što se može vidjeti na gornjoj snimci zaslona, ​​list za 6th Prosinac nije stvoren, jer 6th Prosinac je prisutan na popisu blagdana.

Molimo slijedite dolje za kôd

 Opcija Eksplicitni podmjesecApply () 'Deklariranje varijabli Dim DVariable As Date Dim RngFind As Range Dim MonthNo, YearNo As Integer Dim StartDate, EndDate As Date' Onemogućavanje zaslona ažurira Application.ScreenUpdating = False s radnim listovima ("Main") 'Dobivanje mjeseca i godina iz ćelije J10 i J11 iz lista "Glavni" MjesecNo = .Range ("J10"). Vrijednost GodinaNo = .Range ("J11"). Vrijednost 'Izvodni datum početka i završetka Datum početka = DatumSerijal (Godinabr., Mjesecbr., 1) Krajnji datum = DateSerial (YearNo, MonthNo + 1, 0) 'Ponavljanje svih datuma u navedenom mjesecu Za DVariable = StartDate To EndDate' Otkrivanje je li datum označen kao praznik Postavite RngFind = .Range ("B16: B26"). Find ( DVariable) 'Provjera je li datum praznik, vikend ili radni dan ako RngFind nije ništa i radni dan (DVariable, 2) <6 Zatim' Umetanje novog lista nakon posljednjeg radnog lista u radne listove radne knjige. Dodati nakon: = radni listovi (radni listovi.broj) ' Preimenovanje aktivnog lista ActiveSheet.Name = Format (DVariable, "dd.mm.yy") End If Next DVariable. Odaberite End W ith Application.ScreenUpdating = True End Sub 

Ako vam se dopao ovaj blog, podijelite ga sa svojim prijateljima na Facebooku. Također, možete nas pratiti na Twitteru i Facebooku.

Voljeli bismo vas čuti, javite nam kako možemo poboljšati svoj rad i učiniti ga boljim za vas. Pišite nam na web stranici e -pošte