Hiển thị thông báo khi thay đổi dữ liệu tự động (Microsoft Excel)
Joydip có một bảng tính Excel được cập nhật liên tục và tự động với dữ liệu thị trường hàng hóa trực tiếp. Anh ta muốn hiển thị một hộp thông báo chứa một thông báo cụ thể bất cứ khi nào dữ liệu trong một ô / phạm vi cụ thể thay đổi để đáp ứng một số tiêu chí được xác định trước. Xác thực dữ liệu sẽ không hoạt động vì tính năng xác thực không được kích hoạt khi dữ liệu tự động thay đổi.
Cách tốt nhất để kiểm tra dữ liệu và hiển thị hộp thông báo mong muốn là sử dụng macro được kích hoạt bởi sự kiện Worksheet_Change. Sự kiện này được kích hoạt bất kỳ khi nào nội dung của ô được thay đổi. Tuy nhiên, nó không được kích hoạt bởi sự thay đổi trong những gì được hiển thị trong một ô. Ví dụ: nếu một phần dữ liệu hàng hóa mới được đặt vào một ô, thì sự kiện sẽ được kích hoạt. Tuy nhiên, nếu một công thức được tính toán lại và kết quả mới của công thức đó được hiển thị, thì sự kiện sẽ không được kích hoạt. Tại sao?
Bởi vì bản thân công thức không thay đổi; nó chỉ là kết quả của công thức (những gì được hiển thị) đã được thay đổi.
Khi sự kiện Worksheet_Change được kích hoạt, macro có thể làm bất cứ điều gì bạn muốn, bao gồm cả hiển thị thông báo của bạn. Đối với ví dụ này, hãy giả sử rằng phạm vi cần kiểm tra là A1: C5 (đây là nơi dữ liệu hàng hóa đang được chèn) và tiêu chí bạn muốn kích hoạt thông báo là mức trung bình của phạm vi là 5. Nếu nội dung của bất kỳ ô nào trong phạm vi được thay đổi và giá trị trung bình của các giá trị trong phạm vi là 5, sau đó một thông báo sẽ được hiển thị.
Private Sub Worksheet_Change(ByVal Target As Excel.Range) Dim rng As Range Set rng = Range("A1:C5") If Not Intersect(Target, rng) Is Nothing Then If Application.WorksheetFunction. _ Average(rng) = 5 Then MsgBox "The average of " & _ rng.Address & " = 5" End If End If Set rng = Nothing End Sub
Điều quan trọng là macro này phải được đặt trong đối tượng trang tính cho trang tính bạn muốn theo dõi. Khi bạn hiển thị VBA Editor, bấm chuột phải vào trang tính mong muốn trong vùng Project Explorer, sau đó chọn Mã Chế độ xem từ menu Ngữ cảnh kết quả. Cửa sổ mã này là nơi bạn đặt macro.
Macro, một lần nữa, được kích hoạt bất kỳ lúc nào có thay đổi ở bất kỳ đâu trên trang tính. Sau đó, macro sử dụng hàm Intersect để xác định xem thay đổi có xảy ra trong phạm vi A1: C5 mong muốn hay không. Nếu đúng, thì giá trị trung bình của phạm vi sẽ được kiểm tra và thông báo sẽ hiển thị nếu kết quả là 5.
ExcelTips là nguồn của bạn để đào tạo Microsoft Excel hiệu quả về chi phí.
Mẹo này (2906) áp dụng cho Microsoft Excel 97, 2000, 2002 và 2003.