Nhập ngày nghỉ theo Bảng trong danh sách ngày nghỉ bằng VBA
Câu hỏi:
Tôi có EmployeeName, HolidayStart và HolidayEnd trong một Bảng tính. Làm cách nào để tô màu ngày nghỉ của từng nhân viên trong các tờ tháng tiếp theo?
Trả lời:
Nhập Mã sau với XL5 / 7 trong một ModuleSheet, với XL8 trong một Mô-đun chung, gán nó cho một Nút và chạy nó.
Đặt đoạn mã dưới đây vào mô-đun chuẩn
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