Dưới đây, chúng ta sẽ xem xét một chương trình trong Excel VBA đặt màu nền của nhiệm vụ đúng tiến độ thành màu xanh lá cây và đặt màu nền của nhiệm vụ bị chậm tiến độ thành màu đỏ.

Tình huống:

Trên Sheet1, chúng ta có ba nhiệm vụ (X, Y, Z). “1” cho biết rằng một nhiệm vụ đã được hoàn thành. Nhiệm vụ được thực hiện đúng tiến độ nếu số “1” tồn tại trong mọi cột cho đến và bao gồm cả ngày hôm nay. Hôm nay là 6 tháng sáu. Nhiệm vụ X và Y đúng tiến độ. Nhiệm vụ Z chậm tiến độ (không có “1” trong ô E8).

Tasks on Schedule in Excel VBA

Tạo sự kiện thay đổi trang tính. Mã được thêm vào Sự kiện Thay đổi Trang tính sẽ được Excel VBA thực thi khi bạn thay đổi một ô trên trang tính.

  1. Mở Trình soạn thảo Visual Basic.

  2. Nhấp đúp vào Trang tính 1 (Sheet1) trong Trình khám phá dự án.

  3. Chọn Trang tính từ danh sách thả xuống bên trái. Chọn Thay đổi từ danh sách thả xuống bên phải.

Worksheet Change Event in Excel VBA

Thêm các dòng mã sau vào Sự kiện Thay đổi Trang tính:

  1. Khai báo hai biến kiểu Integer.

Dim i As Integer, j As Integer
  1. Thêm vòng lặp Do While.

Do While Cells(6 + i, 1).Value <> ""

i = i + 1

Loop

Giải thích: Đối với i = 0, Excel VBA kiểm tra tác vụ X, đối với i = 1, tác vụ Y, v.v.

Excel VBA rời khỏi vòng lặp Do While khi Ô (6 + i, 1). Giá trị trống (không cần kiểm tra thêm tác vụ).

Thêm các dòng mã sau (tại 6, 7 và 8) vào Vòng lặp Do While.

  1. Khởi tạo biến j có giá trị 0.

j = 0
  1. Đặt màu nền của nhiệm vụ thành màu xanh lá cây giả sử rằng nhiệm vụ đó đang đúng tiến độ (tất nhiên điều này không nhất thiết phải đúng).

Cells(6 + i, 1).Interior.ColorIndex = 4
  1. Thêm một vòng lặp Do While khác.

Do While Cells(4, 2 + j).Value <= Date

If Cells(6 + i, 2 + j).Value = 0 Then Cells(6 + i, 1).Interior.ColorIndex = 3

j = j + 1

Loop

Lưu ý: hàm Date trả về ngày hôm nay.

Giải thích: Với i = 0, j = 0, Excel VBA sẽ kiểm tra ô B6. Đối với i = 0, j = 1, Excel VBA sẽ kiểm tra ô C6, v.v. Một nhiệm vụ được thực hiện đúng lịch nếu “1” tồn tại trong mọi cột cho đến và bao gồm cả ngày hôm nay. Nếu Excel VBA tìm thấy “0”, nó sẽ đặt màu nền của nhiệm vụ thành màu đỏ.

  1. Chạy thử chương trình. Ví dụ: cho biết rằng nhiệm vụ Z vào ngày 6 tháng 6 đã được hoàn thành. Kết quả là nhiệm vụ Z sẽ tự động chuyển sang màu xanh lục.

Tasks on Schedule Result