Lựa chọnThay đổi là sự kiện được tích hợp vào mô hình Đối tượng Excel cho việc này. Nó phải làm chính xác như bạn muốn, kích hoạt bất cứ lúc nào người dùng nhấp vào bất cứ nơi nào ...
Tôi không chắc chắn rằng tôi hiểu phản đối của bạn về biến toàn cầu ở đây, bạn sẽ chỉ cần 1 nếu bạn sử dụng sự kiện Application.SelectionChange . Tuy nhiên, bạn sẽ không cần bất kỳ điều gì nếu bạn sử dụng mã lớp Workbook phía sau (để bẫy sự kiện Workbook.SelectionChange) hoặc mã lớp Worksheet phía sau (để bẫy sự kiện Worksheet.SelectionChange). (Trừ khi vấn đề của bạn là vấn đề "khôi phục toàn cầu biến" trong VBA, mà chỉ có một giải pháp: xử lý lỗi ở mọi nơi. Không cho phép bất kỳ lỗi nào bị lỗi, thay vào đó hãy ghi nhật ký và/hoặc "báo cáo mềm" cho người dùng.)
Bạn cũng có thể cần phải nắm bắt các sự kiện Worksheet.Activate() và Worksheet.Deactivate() (hoặc tương đương trong lớp Workbook) và/hoặc Workbook.Activate và Workbook.Deactivate () sự kiện để bạn biết khi nào người dùng đã chuyển đổi trang tính và/hoặc sổ làm việc. Cửa sổ kích hoạt và hủy kích hoạt sự kiện sẽ làm cho phương pháp này hoàn tất. Tất cả họ đều có thể gọi cùng một quy trình chính xác, tuy nhiên, tất cả đều biểu thị cùng một điều: người dùng đã thay đổi "tiêu điểm", nếu bạn muốn.
Nếu bạn không thích VBA, btw, bạn có thể làm tương tự bằng VB.NET hoặc C#.
[Chỉnh sửa: Dbb thực hiện một điểm rất tốt về sự kiện SelectionChange không nhận được nhấp chuột khi người dùng nhấp vào trong ô hiện được chọn. Nếu bạn cần phải chọn nó, thì bạn sẽ cần phải sử dụng phân lớp.]
Nguồn
2008-10-07 18:26:55
Hoàn hảo, cảm ơn :) – haslo