Въведете празника според таблицата в списъка с ваканции, използвайки VBA

Anonim

Въпрос:
Имам EmployeeName, HolidayStart и HolidayEnd в работен лист. Как мога да оцветя празниците на всеки служител в следващите месечни листове?

Отговор:
Въведете следния код с XL5/7 в лист с модули, с XL8 в общ модул, задайте го на бутон и го стартирайте.

Поставете кода по -долу в стандартния модул

Sub NewVacation () Dim rngFind As Range Dim intRow As Integer, intMonth As Integer, intCounter As Integer intRow = 3 Do Until IsEmpty (Клетки (intRow, 1)) За intMonth = месец (Клетки (intRow, 2)) Към месец (клетки (intRow, 3)) Задайте rngFind = Работни листове (Формат (DateSerial (1, intMonth, 1), "mmmm")). _ Колони (1). Find _ (Клетки (intRow, 1), LookIn: = xlValues, lookat: = xlWhole) Ако intMonth = Month (Клетки (intRow, 2)) И intMonth = _ месец (Клетки (intRow, 3) ) Тогава За intCounter = Ден (Клетки (intRow, 2)) Към ден (Клетки (intRow, 3)) rngFind.Offset (0, intCounter) .Interior.ColorIndex = 3 Следващ intCounter ElseIf intMonth = Month (Клетки (intRow, 2 )) Тогава За intCounter = Ден (Клетки (intRow, 2)) Към ден (DateSerial _ (1, Month (Клетки (intRow, 2)) + 1, 0)) rngFind.Offset (0, intCounter) .Interior.ColorIndex = 3 Следващ intCounter Друг За intCounter = 1 към ден (клетки (intRow, 3)) rngFind.Offset (0, intCounter) .Interior.ColorIndex = 3 Следващ intCounter End Ако Следващ intMonth intRow = intRow + 1 Loop End Sub