Hướng dẫn cách dùng hàm NOW TODAY TIME trong VBA Excel

Trong Excel chúng ta có các hàm dùng để lấy giá trị thời gian thực như hàm NOW, TODAY và hàm xác định giờ là TIME. Tuy nhiên việc sử dụng những hàm này lại có một nhược điểm là Excel sẽ luôn luôn phải tính toán những hàm này liên tục. Vậy có cách nào để thay thế cách sử dụng những hàm này mà vẫn đạt hiệu quả như mong muốn? Hãy cùng Học Excel Online tìm hiểu qua bài viết này.

Trước hết các bạn có thể xem lại bài viết về hàm NOW, DATE, TIME trong Excel:

Định dạng thời gian trong Excel & cách sử dụng hàm NOW và TIME để chèn thời gian

Cách sử dụng đối tượng NOW trong VBA thay cho hàm NOW

Hàm =NOW() trong Excel là hàm giúp tạo ra 1 giá trị thời gian theo đúng thời gian thực, gồm cả Ngày/tháng/năm và giờ:phút:giây.

Ví dụ:

Kết quả của hàm sẽ luôn thay đổi mỗi khi bạn nhập bất kỳ công thức nào trong Excel.

Để tránh việc phải sử dụng hàm NOW, chúng ta có thể sử dụng câu lệnh sau đây trong VBA:

Trong hình trên, chúng ta có sử dụng Macro trong VBA là câu lệnh NowByVBA

Tại vị trí ô B3 của Sheet1 (là Sheet đang làm việc) điền giá trị thời gian hiện tại là NOW

Kết quả của câu lệnh VBA và hàm NOW là giống nhau. Tuy nhiên câu lệnh VBA trên chỉ hoạt động khi được gọi ra, và kết quả sẽ là 1 giá trị cố định tại 1 thời điểm. Còn hàm NOW() sẽ luôn biến động và thay đổi giá trị. Do đó chúng ta có thể sử dụng cách lấy thời gian hiện tại bằng NOW trong VBA sẽ tốt hơn.

Cách sử dụng đối tượng DATE trong VBA thay cho hàm TODAY

Khác với hàm NOW(), hàm TODAY() trong Excel giúp xác định đối tượng Ngày/tháng/năm hiện tại.

Ví dụ:

Chúng ta có câu lệnh thay thế cho hàm TODAY trong VBA như sau:

Trong VBA, chúng ta sử dụng đối tượng là DATE chứ không phải là Today. Câu lệnh TodayByVBA được hiểu là:

Tại vị trí ô B5 của Sheet1 (là sheet đang áp dụng) gán giá trị Date là ngày hiện tại.

Kết quả tương tự như việc sử dụng hàm TODAY(), tuy nhiên giá trị này không thay đổi 1 cách tự động mà chỉ xác định mỗi khi kích hoạt macro TodayByVBA.

Xác định giờ hiện tại với câu lệnh Time trong VBA

Ngoài ra trong Excel không có hàm giúp xác định trực tiếp giá trị giờ:phút:giây tại thời điểm hiện tại. Chúng ta chỉ có thể xác định giờ phút giây theo hàm NOW() rồi kết hợp với các hàm HOUR, MINUTE, SECOND. Ví dụ như:

Khá phức tạp phải không nào? Tuy nhiên trong VBA việc này lại thực hiện khá đơn giản với câu lệnh sau:

Như vậy với 3 câu lệnh trong VBA, chúng ta hoàn toàn có thể thay thế được các hàm NOW, TODAY, TIME để có thể làm việc với đối tượng thời gian thực. Đây cũng là 1 biện pháp rất hiệu quả giúp file Excel của bạn tăng tốc độ tính toán, giảm các công thức động trong Excel.

Ngoài ra các bạn có thể tham khảo 1 số bài viết cùng chủ đề thời gian như:

Tự động điền thời gian theo tổng số ngày

Hàm thời gian thông dụng trong Excel

Cộng tổng thời gian quá 24 giờ trong Excel