Ví dụ này hướng dẫn bạn cách so sánh ngày và giờ trong Excel VBA. Ngày và giờ được lưu trữ dưới dạng số trong Excel và đếm số ngày kể từ ngày 0 tháng 1 năm 1900. Những gì bạn thấy phụ thuộc vào định dạng số.

  1. Nhập một số số vào cột A.

Numbers

  1. Những con số này là ngày tháng. Đây là một cách hoàn hảo để nhập một số ngày mà không cần lo lắng về định dạng Ngày. Thay đổi định dạng thành Ngày (Nhấp chuột phải vào tiêu đề cột A, Định dạng Ô và chọn Ngày).

Kết quả:

Dates

Lưu ý: Ngày ở Định dạng Hoa Kỳ. Tháng đầu tiên, ngày thứ hai. Loại định dạng này phụ thuộc vào cài đặt khu vực cửa sổ của bạn.

Đặt một nút lệnh trên trang tính của bạn và thêm các dòng mã sau:

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

Dim i As Integer
  1. Thêm vòng lặp For Next.

For i = 1 To 5

Next i
  1. Hàm Date trả về ngày hiện tại mà không có thời gian. Thêm dòng mã sau vào vòng lặp, để đánh dấu tất cả các ô có chứa ngày hiện tại (13/3/2020).

If Cells(i, 1).Value = Date Then Cells(i, 1).Font.Color = vbRed

Kết quả:

Dates Equal To

  1. Thêm dòng mã sau vào vòng lặp, để đánh dấu tất cả các ngày trước ngày 19/04/2019.

If Cells(i, 1).Value < DateValue("April 19, 2019") Then Cells(i, 1).Font.Color = vbRed

Kết quả:

Dates Earlier Than

  1. Nhưng còn những lúc, chúng tôi nghe bạn nói. Chúng là số thập phân. Chuyển về định dạng Chung và thay đổi các số thành số thập phân.

Decimal Numbers

  1. Bây giờ thay đổi định dạng thành định dạng ‘Ngày và Giờ’.

Date and Time Format

Kết quả:

Dates and Times

  1. Nếu bạn muốn bôi đen tất cả các ô chứa ngày hiện tại, chúng ta không thể sử dụng dòng mã ở số 5 nữa. Tại sao không? Vì các số ở cột A lúc này là số thập phân. So sánh nó với Ngày (một số nguyên) sẽ không cho kết quả nào phù hợp. (Nó sẽ chỉ khớp với chính xác là 3/13/2020 vào lúc nửa đêm!) Dòng mã sau hoạt động:

If Int(Cells(i, 1).Value) = Date Then Cells(i, 1).Font.Color = vbRed

Giải thích: chúng tôi chỉ sử dụng hàm Int. Hàm Int làm tròn một số xuống số nguyên gần nhất. Bằng cách này, chúng ta có thể lấy ngày không có thời gian và so sánh những ngày này với Ngày.

Kết quả:

Dates Without Times Equal To

  1. Thêm dòng mã sau để đánh dấu tất cả các ô chứa thời gian vào buổi sáng.

If (Cells(i, 1).Value - Int(Cells(i, 1).Value)) < 0.5 Then Cells(i, 1).Font.Color = vbRed

Giải thích: chúng ta chỉ cần số thập phân nên chúng ta trừ phần nguyên. Buổi trưa (nửa ngày) được biểu thị bằng 0,5.

Các số thập phân thấp hơn 0,5 là thời gian vào buổi sáng.

Kết quả:

Times in the Morning