Ustvarite dnevne liste meseca brez vikendov in praznikov z uporabo VBA

Anonim

V tem članku bomo ustvarili makro za ustvarjanje lista za vsak dan v tednu za določen mesec določenega leta, razen vseh datumov, navedenih na seznamu počitnic.

Pred zagonom makra so potrebni trije vhodi. V celici J10 moramo navesti številko meseca, v celici J11 leto in podatek o datumu počitnic v območju B16: B26.

Ko določite vhodne vrednosti, kliknite gumb za oddajo, da zaženete makro.

Ta makro bo vstavil nov list za vsak dan v tednu za določen mesec, razen datumov, navedenih na seznamu počitnic.

Logična razlaga

V tem makru smo s funkcijo DateSerial poiskali zadnji datum navedenega meseca. FOR Loop smo uporabili za zanko od začetnega datuma meseca do zadnjega datuma v mesecu. S funkcijo Najdi smo ugotovili, ali uporabljeni datum obstaja na navedenem seznamu počitnic.

Funkcija Weekday se uporablja skupaj z izjavo If za preverjanje, ali je datum dan med tednom ali vikendom. Če bo stavek vstavil nov list samo, če je datum delavnik in ga na seznamu počitnic ni. Kot je razvidno iz zgornjega posnetka zaslona, ​​list za 6th December ni ustvarjen, saj 6th December je na seznamu počitnic.

Za kodo sledite spodaj

 Možnost Eksplicitni podmesecApply () 'Razglasitev spremenljivk Zatemni DV Spremenljiv kot datum Dim RngNajdi kot obseg Dim MesecNe, LetoNo Kot celo število Dim Začetni datum, Končni datum kot datum' Onemogočanje zaslona posodobi Application.ScreenUpdating = False z delovnimi listi ("Main") "Pridobivanje meseca in leto iz celice J10 in J11 iz lista "Glavni" MonthNo = .Range ("J10"). Value YearNo = .Range ("J11"). Value 'Izhodiščni in končni datum StartDate = DateSerial (YearNo, MonthNo, 1) EndDate = DateSerial (YearNo, MonthNo + 1, 0) 'Ponavljanje po vseh datumih v določenem mesecu Za DVariable = StartDate To EndDate' Ugotovitev, če je datum označen kot dopust Set RngFind = .Range ("B16: B26"). Find ( DVariable) 'Preverjanje, ali je datum praznik, vikend ali dan v tednu, če RngFind ni nič in dan v tednu (DVariable, 2) <6 Nato' Vstavi nov list za zadnjim delovnim listom v delovne liste delovnega zvezka. Dodaj po: = delovni listi (delovni listi. Število) ' Preimenovanje aktivnega lista ActiveSheet.Name = Format (DVariable, "dd.mm.yy") End If Next DVariable. Izberite End W ith Application.ScreenUpdating = True End Sub 

Če vam je bil ta blog všeč, ga delite s prijatelji na Facebooku. Prav tako nam lahko sledite na Twitterju in Facebooku.

Radi bi slišali od vas, nam sporočite, kako lahko izboljšamo svoje delo in ga izboljšamo za vas. Pišite nam na spletnem mestu e -pošte