Geben Sie den Urlaub nach der Tabelle in den Ferien-Liste mit VBA
ein Frage:
Ich habe den EmployeeName, den HolidayStart und das HolidayEnd in einem Arbeitsblatt. Wie kann ich die Feiertage jedes Mitarbeiters in den folgenden Monatsblättern ausmalen?
Antwort:
Geben Sie den folgenden Code mit XL5 / 7 in ein Modulblatt ein, mit XL8 in einem allgemeinen Modul, weisen Sie ihn einer Schaltfläche zu und führen Sie ihn aus.
Fügen Sie den folgenden Code in das Standardmodul
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
ein