Geben Sie den Feiertag gemäß der Tabelle in der Feiertagsliste mit VBA ein

Anonim

Frage:
Ich habe den EmployeeName, den HolidayStart und den HolidayEnd in einem Arbeitsblatt. Wie kann ich die Feiertage jedes Mitarbeiters in den folgenden Monatsblättern einfärben?

Antworten:
Geben Sie den folgenden Code mit XL5/7 in ein ModuleSheet ein, mit XL8 in ein allgemeines Modul, weisen Sie ihn einem Button zu und führen Sie ihn aus.

Fügen Sie den folgenden Code in das Standardmodul ein

Sub NewVacation() Dim rngFind As Range Dim intRow As Integer, intMonth As Integer, intCounter As Integer intRow = 3 Do Until IsEmpty(Cells(intRow, 1)) For intMonth = Month(Cells(intRow, 2)) To Month(Cells (intRow, 3)) Set rngFind = Worksheets(Format(DateSerial(1, intMonth, 1), "mmmm")). _ Columns(1).Find _ (Cells(intRow, 1), LookIn:=xlValues, lookat:=xlWhole) If intMonth = Month(Cells(intRow, 2)) And intMonth = _ Month(Cells(intRow, 3) ) Then For intCounter = Day(Cells(intRow, 2)) To Day(Cells(intRow, 3)) rngFind.Offset(0, intCounter).Interior.ColorIndex = 3 Next intCounter ElseIf intMonth = Month(Cells(intRow, 2 )) Then For intCounter = Day(Cells(intRow, 2)) To Day(DateSerial _ (1, Month(Cells(intRow, 2)) + 1, 0)) rngFind.Offset(0, intCounter).Interior.ColorIndex = 3 Next intCounter Else For intCounter = 1 To Day(Cells(intRow, 3)) rngFind.Offset(0, intCounter).Interior.ColorIndex = 3 Next intCounter End If Next intMonth intRow = intRow + 1 Loop End Sub