Cách Tự động Ghi Nhận Thời Gian Nhập Dữ Liệu Bằng VBA
Nếu bạn và các đòng nghiệp cùng làm việc trên 1 file Excel thì việc nội dung thường được chỉnh sửa nhiều lần trong các khoảng thời gian khác nhau. Nhưng làm thế nào để quản lý, kiểm soát thông tin về thời gian tạo, chỉnh sửa file gần nhất? Cách đơn giản là tạo code VBA tự động ghi nhận thời gian dữ liệu được nhập vào file Excel, từ đó thời gian nhập liệu của tất cả nội dung đều được ghi lại và hiển thị ngay trong Excel. Hãy cùng Gitiho tìm hiểu cách làm trong bài viết này nhé!
Biến Excel thành công cụ phân tích dữ liệu chuyên sâu.
XEM NHANH BÀI VIẾT
- 1 Hướng dẫn cách viết code tự động ghi nhận thời gian nhập dữ liệu bằng VBA
- 2 Kết luận
Hướng dẫn cách viết code tự động ghi nhận thời gian nhập dữ liệu bằng VBA
Sử dụng hàm NOW trong Excel
Hàm NOW trong Excel có chức năng xác định thời điểm hiện tại, hàm NOW sẽ trả kết quả bao gồm cả ngày/tháng/năm và giờ/phút/giây theo thời gian thực. Cũng chính vì thế mà bất kỳ khi nào Excel thực hiện tính toán thì kết quả hàm NOW sẽ tự động thay đổi. Tuy nhiên, nhiệm vụ của chúng ta là ghi nhận thời điểm kết thúc nhập dữ liệu vào Excel, như vậy kết quả đó không được thay đổi.
Để xem xét thời gian kết thúc nhập dữ liệu bằng hàm NOW trong Excel bạn làm theo các bước sau:
Bước 1: Viết hàm NOW với cú pháp: =NOW()Bước 2: Sao chép kết quả của hàmBước 3: Dán kết quả của hàm để hàm không tự động cập nhật.

Xem thêm: Làm thế nào dùng hàm NOW TODAY TIME trong VBA Excel
Sử dụng code VBA để ghi nhận thời gian nhập dữ liệu
VBA như một vị cứu tinh để bạn không phải thực hiện những thao tác thủ công, bất tiện, mất thời gian như trên nữa. Với VBA tất cả sẽ được tự động hóa chỉ sau vài bước đơn giản:
Ví dụ bạn nhập liệu vào ô A3 và muốn nhận kết quả tại ô B3
Bước 1: Sử dụng hàm NOW trong VBA
Bạn nhập câu lệnh hàm NOW sau vào ô B3:
ActiveSheet.Range(“B3”).Value = Now
Bước 2: Gắn câu lệnh hàm NOW vào sự kiện trong VBA tức là gắn với sự kiện thay đổi dữ liệu trong ô A3.
- Trong VBA Excel có 2 loại sự kiện chính:
1. Sự kiện cho WorkbookGồm nhiều đối tượng đa dạng thuộc các sự kiện xảy ra với 1 file Excel (Workbook) như chọn 1 file Excel, mở, đóng 1 file Excel, lưu 1 file Excel.
2. Sự kiện cho WorksheetLà các sự kiện gắn liền đến 1 sheet trong file Excel (Worksheet trong Workbook), các đối tượng trong sự kiện Worksheet ít hơn trong Workbook, nó thường liên quan đến sự thay đổi trong tính toán, lựa chọn hay cập nhật dữ liệu trong sheet.

Xem thêm: Hướng dẫn tìm hiểu về ý nghĩa và cách dùng các sự kiện trong VBA Excel
Tiếp tục với ví dụ của chúng ta: Nếu bạn thay đổi dữ liệu tại ô A3 thuộc Sheet1 thì bạn phải thực hiện gọi sự kiện Worksheet_Change tại Sheet1 và gắn câu lệnh hàm NOW vào như sau:
- Tại cửa sổ Project, nháy đúp chuột vào Worksheet cần tọa sự kiện (Sheet1)
- Chọn Worksheet, sau đó chọn sự kiện Change
- Từ đó Sub Worksheet_Change được tạo tự động
- Tiếp theo bạn nhập đoạn mã VBA sau:
Trong đó:
If Not Application.Intersect(Range(“A3”), Target) Is Nothing Then....End If
- Xét xem tại ô A3 có xảy ra thay đổi dữ liệu không
ActiveSheet.Range(“B3”).Value = Now
- Gán kết quả hàm NOW vào ô B3Bây giờ khi bạn nhập dữ liệu tại ô A3 trong Excel, kết quả sẽ tự động trả về ô B3.
Bước 3: Tối ưu phạm vi tác động của câu lệnh
Như vậy là bạn đã thực hiện thành công việc ghi nhận thời gian nhập dữ liệu tự động bằng VBA trên 1 ô tính trong Excel. Bây giờ chúng ta hãy thử áp dụng câu lệnh với 1 vùng rộng hơn từ A2 đến A100 hay cả cột A nhé!
Đoạn mã VBA để kết quả hàm NOW được trả về cột B với tất cả các ô cột A tương ứng được nhập dữ liệu như sau:
If Not Application.Intersect(Range(“A2:A100”), Target) Is Nothing Then If Range(“A” & Target.Row).Value = “” Then Range(“B” & Target.Row).ClearContents Else Range(“B” & Target.Row).Value = Now End IfEnd If
Trong đó:
- Intersect(Range(“A2:A100”), Target): Xét sự kiện diễn ra trong vùng A2:A100 (nếu muốn thay đổi vùng sự kiện bạn chỉ cần thay đổi tại Range("vùng sự kiện"))
- If Range(“A” & Target.Row).Value = “” Then: Nếu giá trị tại cột A ở dòng tác động rỗng thì
- Range(“B” & Target.Row).ClearContents: Xóa nội dung tại dòng tương ứng ở cột B
- Else: Mặt khác
- Range(“B” & Target.Row).Value = Now: Gắn kết quả hàm NOW tại dòng tương ứng tác động vào cột B
- End if: Kết thúc hàm if xét giá trị rỗng
- End if: Kết thúc hàm if xét vùng sự kiện
Kết quả:


Như bạn có thể thấy VBA giúp đỡ chúng ta rất nhiều trong quá trình tự động hóa công việc. Vậy nếu bạn đang muốn học VBA để tiết kiệm thời gian làm việc hơn thì có thể tham khảo một số khóa học sau tại Gitiho:
Tuyệt đỉnh VBA: Tự động hóa Excel với lập trình VBA
G-LEARNING 499,000đ 799,000đ Đăng ký Học thử
Ebook thư viện code mẫu VBA
G-LEARNING 69,000đ 69,000đ Đăng ký Học thử
Kết luận
Trong bài viết trên, Gitiho đã cùng bạn tìm hiểu về cách tự động ghi nhận thời gian nhập dữ liệu bằng VBA với ví dụ cụ thể. Như vậy là chỉ với vài mã code đơn giản trong VBA đã có thể tự hóa các thao tác Excel và tiết kiệm thời gian làm việc của mình rồi đó.
Hy vọng bạn đã hiểu rõ và áp dụng thành công cho công việc của mình. Đừng quên theo dõi chúng mình để xem thêm các bài viết bổ ích khác nhé!
Ngay bây giờ hãy cùng luyện tập thêm với bộ bài tập Excel có đáp án của Gitiho để nằm lòng tin học văn phòng nhé!
Từ khóa » Sự Kiện Worksheet_change Trong Vba
-
Các Sự Kiện Khi Thao Tác Với Worksheet Trong VBA
-
Khai Thác Sự Kiện Worksheet_Change VBA Excel để Cập Nhật Dữ ...
-
Event Trong VBA - Viblo
-
Tự động Cập Nhật Báo Cáo Khi Thay đổi Thời Gian Bằng VBA
-
Xin Giúp đỡ Về Sự Kiện Worksheet_Change | Page 2
-
Worksheet.Change Event (Excel) | Microsoft Docs
-
Events (sự Kiện) Trong VBA Excel - Tài Liệu Text - 123doc
-
Sự Kiện Trong VBA
-
Nhiều Sự Kiện Worksheet_Change Trong Mã Vba - HelpEx
-
VBA Worksheet Change Event - Run A Macro When A Cell Changes
-
Sự Kiện Excel Worksheet_Change Không Hoạt động - HelpEx
-
Worksheet Change Event - Excel Dashboards VBA
-
SPRINGO KHAI GIẢNG KHÓA HỌC EXCEL - VBA