Izmantojot VBA, izveidojiet mēneša dienas lapas bez nedēļas nogalēm un brīvdienām

Anonim

Šajā rakstā mēs izveidosim makro, lai izveidotu lapu katrai nedēļas dienai par norādītā gada mēnesi, izņemot visus brīvdienu sarakstā norādītos datumus.

Pirms makro palaišanas ir nepieciešamas trīs ievades. Mums šūnā J10 jānorāda mēneša numurs, šūnā J11 gads un brīvdienu datumu saraksts jānorāda diapazonā B16: B26.

Pēc ievades vērtību norādīšanas noklikšķiniet uz pogas Iesniegt, lai palaistu makro.

Šis makro ievietos jaunu lapu katrai nedēļas dienai par norādīto mēnesi, izņemot brīvdienu sarakstā norādītos datumus.

Loģisks skaidrojums

Šajā makro mēs esam izmantojuši funkciju DateSerial, lai atrastu norādītā mēneša pēdējo datumu. Mēs esam izmantojuši FOR Loop, lai cilpotu no mēneša sākuma datuma līdz mēneša pēdējam datumam. Mēs esam izmantojuši funkciju Atrast, lai noskaidrotu, vai norādītais brīvdienu saraksts pastāv.

Funkcija Nedēļas diena tiek izmantota kopā ar paziņojumu Ja, lai pārbaudītu, vai datums ir darba diena vai nedēļas nogale. Ja paziņojumā tiks ievietota jauna lapa tikai tad, ja datums ir darbdiena un tā nepastāv brīvdienu sarakstā. Kā redzams iepriekš redzamajā ekrānuzņēmumā, lapa 6tūkst Decembris nav izveidots, jo 6tūkst Decembris ir iekļauts svētku sarakstā.

Lūdzu, sekojiet tālāk norādītajam kodam

 Opcija Explicit Sub MonthApply () 'Deklarējošie mainīgie Dim DV Mainīgs kā datums Dim Rng Atrast kā diapazonu Dim MonthNo, YearNo Kā vesels skaitlis Dim StartDate, EndDate as Date' Displeja atjauninājumu atspējošana Application.ScreenUpdating = False With Worksheets ("Main") 'Getting month and gads no šūnas J10 un J11 no lapas "Galvenā" = DateSerial (YearNo, MonthNo + 1, 0) 'Visu norādītā mēneša datumu apskate DVariable = StartDate To EndDate' Atrast, vai datums ir atzīmēts kā brīvdiena Set RngFind = .Range ("B16: B26"). Find ( DVariable) "Pārbaude, vai datums ir brīvdiena, nedēļas nogale vai darba diena Aktīvās lapas ActiveSheet pārdēvēšana. Pieteikums. ScreenUpdating = True End Sub 

Ja jums patika šis emuārs, kopīgojiet to ar saviem draugiem Facebook. Varat arī sekot mums Twitter un Facebook.

Mēs labprāt uzklausītu jūsu viedokli, dariet mums zināmu, kā mēs varam uzlabot savu darbu un padarīt to labāku jums. Rakstiet mums e -pasta vietnē