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