Εισαγάγετε τις διακοπές σύμφωνα με τον Πίνακα στη λίστα διακοπών χρησιμοποιώντας 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 Before IsEmpty (Cells (intRow, 1)) For intMonth = Month (Cells (intRow, 2)) To Month (Cells (intRow, 3)) Ορισμός rngFind = Φύλλα εργασίας (Μορφή (DateSerial (1, intMonth, 1), "mmmm")). _ Στήλες (1). Εύρεση _ (Κελιά (intRow, 1), LookIn: = xlValues, lookat: = xlWhole) If intMonth = Month (Cells (intRow, 2)) And intMonth = _ Month (Cells (intRow, 3) ) Στη συνέχεια Για 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 )) Στη συνέχεια Για intCounter = Day (Cells (intRow, 2)) To Day (DateSerial _ (1, Month (Cells (intRow, 2)) + 1, 0)) rngFind.Offset (0, intCounter) .Interior.ColorIndex = 3 Επόμενο 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