Các hàm xử lý ngày tháng trong VBA (Date & Time)
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.
Bài viết này được đăng tại [free tuts .net]
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ả:
Tương tự, bạn có thể sử dụng hàm Month và 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.
* 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ả:
* 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 và 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ả:
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
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.