Креирајте дневне листове по месец дана без викенда и празника користећи ВБА

Преглед садржаја

У овом чланку ћемо створити макро за креирање листа за сваки радни дан за наведени месец наведене године, искључујући све датуме наведене у листи празника.

Пре покретања макроа потребна су три улаза. Морамо навести број месеца у ћелији Ј10, годину у ћелији Ј11 и навести листу датума празника у распону Б16: Б26.

Након што наведете улазне вредности, кликните на дугме за слање да бисте покренули макро.

Овај макро ће уметнути нови лист за сваки радни дан за наведени месец, искључујући датуме наведене у листи празника.

Логичко објашњење

У овом макроу смо користили функцију ДатеСериал да пронађемо последњи датум наведеног месеца. Користили смо ФОР Лооп за петљу од датума почетка месеца до последњег датума у ​​месецу. Користили смо функцију Финд да пронађемо да ли датум који се користи постоји на наведеној листи празника.

Функција Веекдаи се користи заједно са Иф наредбом за проверу да ли је датум радни дан или викенд. Ако ће изјава уметнути нови лист само ако је датум радни дан и не постоји на листи празника. Као што се може видети на горњој снимци екрана, лист за 6тх Децембар није створен, јер 6тх Децембар је присутан на листи празника.

Молимо следите доле за код

 Опција Експлицитни суб МонтхАппли () 'Декларисање променљивих Дим Дим Вариабле Ас Дате Дим РнгФинд Ас Ранге Дим МонтхНо, ИеарНо Ас Интегер Дим СтартДате, ЕндДате Ас Дате' Онемогућавање екрана ажурира Апплицатион.СцреенУпдатинг = Фалсе Са радним листовима ("Маин") 'Добијање месеца и година из ћелије Ј10 и Ј11 из листа "Главни" МесецНо = .Ранге ("Ј10"). Вредност ГодинаНо = .Ранге ("Ј11"). Вредност 'Извођење датума почетка и завршетка Датум почетка = ДатумСерија (Годинабр., Месецбр., 1) Крајњи датум = ДатеСериал (ИеарНо, МонтхНо + 1, 0) 'Понављање свих датума у ​​наведеном месецу За ДВариабле = СтартДате То ЕндДате' Откривање да ли је датум означен као празник Поставите РнгФинд = .Ранге ("Б16: Б26"). Финд ( ДВариабле) 'Провера да ли је датум празник, викенд или радни дан ако РнгФинд није ништа и радни дан (ДВариабле, 2) <6 Затим' Уметање новог листа после последњег радног листа у радне листове радне свеске. Додати после: = Радни листови (Радни листови.Број) ' Преименовање активног листа АцтивеСхеет.Наме = Формат (ДВариабле, "дд.мм.ии") Енд Иф Нект ДВариабле. Одаберите Енд В итх Апплицатион.СцреенУпдатинг = Труе Енд Суб 

Ако вам се допао овај блог, поделите га са пријатељима на Фацебооку. Такође, можете нас пратити на Твиттер -у и Фацебоок -у.

Волели бисмо да чујемо од вас, јавите нам како можемо побољшати наш рад и учинити га бољим за вас. Пишите нам на веб локацији е -поште

Ви ће помоћи развој сајта, дељење страницу са пријатељима

wave wave wave wave wave