Sisestage puhkus VBA abil puhkusenimekirja tabeli järgi

Anonim

Küsimus:
Mul on töölehel EmployeeName, HolidayStart ja HolidayEnd. Kuidas värvida iga töötaja puhkust järgmiste kuude lehtedel?

Vastus:
Sisestage järgmine kood koos XL5/7 -ga ModuleSheet -i, XL8 -ga üldmoodulisse, määrake see nupule ja käivitage see.

Asetage allolev kood standardmoodulisse

Sub NewVacation () Dim rngFind As Range Dim intRow as Integer, intMonth As Integer, intCounter As Integer intRow = 3 Do Before IsEmpty (Cells (intRow, 1)) For intMonth = Month (Cells (intRow, 2)) to Month (Cells (intRow, 3)) Set rngFind = Töölehed (Formaat (DateSerial (1, intMonth, 1), "mmmm")). _ Veerud (1). Leia _ (Lahtrid (intRow, 1), LookIn: = xlValues, lookat: = xlWhole) Kui intMonth = Kuu (Lahtrid (intRow, 2)) Ja intMonth = _ Kuu (Lahtrid (intRow, 3) ) Siis InCounter = Päev (Lahtrid (intRow, 2)) Päevale (Lahtrid (intRow, 3)) rngFind.Offset (0, intCounter) .Interior.ColorIndex = 3 Järgmine intCounter ElseIf intMonth = Month (Lahtrid (intRow, 2) )) Siis intCounter = Päev (lahtrid (intRow, 2)) Päevale (DateSerial _ (1, kuu (lahtrid (intRow, 2)) + 1, 0)) rngFind.Offset (0, intCounter) .Interior.ColorIndex = 3 Järgmine intCounter Muu IntCounter jaoks = 1 täna (Lahtrid (intRow, 3)) rngFind.Offset (0, intCounter) .Interior.ColorIndex = 3 Järgmine intCounter End If Next intMonth intRow = intRow + 1 Loop End Sub