Cách tự động ghi nhận thời gian nhập dữ liệu bằng VBA

Nội dung được viết bởi Lê Nguyễn Nhật Phương

 

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.

 

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.

Cách tự động ghi nhận thời gian nhập dữ liệu bằng VBA
 

Để 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àm
Bước 3: Dán kết quả của hàm để hàm không tự động cập nhật.

Cách tự động ghi nhận thời gian nhập dữ liệu bằng VBA

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 Workbook
Gồ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.

Cách tự động ghi nhận thời gian nhập dữ liệu bằng VBA
 

2. Sự kiện cho Worksheet
Là 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.

Cách tự động ghi nhận thời gian nhập dữ liệu bằng VBA

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:

Cách tự động ghi nhận thời gian nhập dữ liệu bằng VBATrong đó: 

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 ô B3
Bâ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 If
End 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ả:

Cách tự động ghi nhận thời gian nhập dữ liệu bằng VBA

Cách tự động ghi nhận thời gian nhập dữ liệu bằng VBA

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:

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é! 

Nếu công việc của bạn liên quan nhiều đến quản lý, phân tích dữ liệu và làm báo cáo trên bảng tính thì giỏi Excel thôi chưa đủ. Nếu biết thêm về VBA sẽ giúp bạn tiết kiệm tối đa thời gian làm việc nhờ làm báo cáo tự động, phân tích và xử lý số liệu chính xác tuyệt đối, đặc biệt công cần lọ mọ sửa thủ công,…

Tất tần tật những kiến thức từ cơ bản đến nâng cao về cách sử dụng VBA trong Excel sẽ được đề cập trong khóa học VBAG01: Tuyệt đỉnh VBA - Tự động hóa Excel với lập trình VBA tại Gitiho

Hãy nhấn vào Học thử hoặc Đăng ký ngay!

0/5 - (0 bình chọn)

0/5 - (0 bình chọn)

0 thảo luận

@ 2020 - Bản quyền của Công ty cổ phần công nghệ giáo dục Gitiho Việt Nam
Giấy chứng nhận Đăng ký doanh nghiệp số: 0109077145, cấp bởi Sở kế hoạch và đầu tư TP. Hà Nội
Giấy phép mạng xã hội số: 588, cấp bởi Bộ thông tin và truyền thông