06/04/2021, 14:51

Các hàm xử lý ngày tháng trong VBA (Date & Time) - ự học Excel VBA

Trong bài này mình sẽ giới thiệu những hàm xử lý ngày tháng trong VBA được sử dụng nhiều nhất. Với những hàm này bạn có thể lấy được các giá trị về thời gian và ngày tháng rất dễ dàng. Và cũng giống như những ngôn ngữ khác, xoay quanh nội dung về xử lý ngày tháng / thời gian thì chủ yếu là cách ...

Trong bài này mình sẽ giới thiệu những hàm xử lý ngày tháng trong VBA được sử dụng nhiều nhất. Với những hàm này bạn có thể lấy được các giá trị về thời gian và ngày tháng rất dễ dàng.

Và cũng giống như những ngôn ngữ khác, xoay quanh nội dung về xử lý ngày tháng / thời gian thì chủ yếu là cách tạo ngày tháng, tạo thời gian, cộng thời gian, lấy ngày giờ hiện tại, và những hàm bóc tách thời gian thành nhiều phần nhỏ.

Trước tiên chúng ta sẽ tìm hiểu về đối tượng Date nhé.

1. Đối tượng Date trong VBA

Date là đối tượng dùng để lưu trữ ngày tháng. Nó là một kiểu dữ liệu Object nên bạn có thể khai báo một biến kiểu Date.

Ví dụ: Khai báo một biến kiểu Date và dùng hàm DateValue để khởi tạo giá trị cho biến đó. Cuối cùng dùng hàm Year để lấy ra năm của ngày.

Dim exampleDate As Date

exampleDate = DateValue("Jan 19, 2020")

MsgBox Year(exampleDate)

Kết quả:

year png

Tương tự, bạn có thể sử dụng hàm Month Day để lấy ngày tháng.

Month(exampleDate)
Day(exampleDate)

2. Hàm DateAdd trong VBA

Để thêm một số ngày vào một ngày thì ta sử dụng hàm DateAdd. Hàm DateAdd có ba đối số như sau:

  • Điền vào "d" cho đối số đầu tiên để thêm ngày, "m" để thêm tháng.
  • Điền vào 3 cho đối số thứ hai để thêm 3 ngày.
  • Đối số thứ ba đại diện cho ngày mà số ngày sẽ được thêm vào.
Dim firstDate As Date, secondDate As Date

firstDate = DateValue("Jan 19, 2020")
secondDate = DateAdd("d", 3, firstDate)

MsgBox secondDate

Kết quả biến secondDate đã được bổ sung thêm 3 ngày so với firstDate.

dateadd png

* Lưu ý: Bạn có thể đôi tham số đầu tiên từ d sang m để thêm vào số tháng thay vì số ngày. Riêng đối với năm thì không được.

3. Hàm Now: Lấy ngày tháng hiện tại

Để lấy ngày tháng hiện tại trên máy tính của bạn thì có thể sử dụng hàm Now.

MsgBox Now

Kết quả:

current date time png

* Lưu ý: Ngày tháng hiện tại nó trả về chính là ngày tháng trên máy tính mà bạn đang sử dụng nhé.

4. Các hàm Hour, Minute, Second

Ba hàm Hour, Minute Second dùng để lấy giờ, phút và giây.

Ví dụ:

' Giờ
MsgBox Hour(Now)

' Phút
MsgBox Minute(Now) 

' Giây
MsgBox Second(Now) 

5. Hàm TimeValue trong VBA

Nếu hàm DateValue dùng để tạo ra ngày tháng thì hàm TimeValue được dùng để tạo ra thời gian.

Hàm TimeValue chuyển đổi một chuỗi thành time serial number, đây là một số từ 0 đến 1.

Ví dụ: buổi trưa (nửa ngày) được biểu thị bằng 0,5.

MsgBox TimeValue("9:20:01 am")

Kết quả:

timevalue png

Bây giờ để thấy rõ rằng Excel xử lý thời gian nội bộ dưới dạng số từ 0 đến 1 thì hãy thêm các dòng mã sau:

Dim y As Double
y = TimeValue("09:20:01")
MsgBox y

time serial number png

Lý do là mình dùng kiểu dữ liệu Double để lưu trữ thời gian nên hàm TimeValue trả về một time series number.

Trên là tổng hợp những thao tác xử lý ngày tháng và thời gian trong VBA. Qua bài này bạn đã hiểu được một số hàm về Date time như: DateValue, TimeValue, Hour, Second, Minute, Year, Month, Date ... và nhiều hàm khác.

Trịnh Tiến Mạnh

27 chủ đề

6824 bài viết

Cùng chủ đề
0