Supriyo hỏi liệu có trình xử lý sự kiện chuột trong VBA không. Anh ta muốn một giá trị được chèn vào một ô khi ô đó được nhấp vào.

Cách tiêu chuẩn để làm điều này là với sự kiện SelectionChange. Mỗi khi lựa chọn thay đổi trong trang tính, sự kiện sẽ được kích hoạt. Sự kiện không chỉ kích hoạt khi một ô được nhấp vào, mà còn nếu ai đó nhấn phím điều khiển con trỏ dẫn đến một ô khác được chọn.

Ví dụ: giả sử bạn muốn ô B5 chứa giá trị 10 bất cứ khi nào ô đó được chọn. Để thực hiện điều đó, bạn có thể sử dụng như sau:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

If Not Intersect(Target, Range("B5")) Is Nothing Then _       Range("B5").Value = 10 End Sub

Mã này được thêm vào một trong các đối tượng trang tính trong vùng Project Explorer của VB Editor. Bấm đúp vào trang tính mà bạn muốn trình xử lý sự kiện áp dụng, sau đó thêm macro vào cửa sổ mã kết quả.

Khi sự kiện SelectionChange được kích hoạt, mục tiêu (phạm vi ô đang được chọn) được chuyển tới trình xử lý. Sau đó, macro sẽ kiểm tra xem phạm vi mục tiêu có chứa ô B5 hay không, và nếu có, hãy nhồi giá trị 10 vào ô B5. Nếu bạn muốn đảm bảo rằng macro chỉ nhồi thông tin vào B5 nếu chỉ chọn B5 (ô đơn), bạn có thể sử dụng phiên bản này của macro:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

If Target.Address = Range("B5").Address Then _       Range("B5").Value = 10 End Sub

_Lưu ý: _

Nếu bạn muốn biết cách sử dụng các macro được mô tả trên trang này (hoặc trên bất kỳ trang nào khác trên trang ExcelTips), tôi đã chuẩn bị một trang đặc biệt bao gồm thông tin hữu ích.

ExcelTips là nguồn của bạn để đào tạo Microsoft Excel hiệu quả về chi phí.

Mẹo này (12514) áp dụng cho Microsoft Excel 2007, 2010, 2013, 2016, 2019 và Excel trong Office 365. Bạn có thể tìm thấy phiên bản của mẹo này cho giao diện menu cũ hơn của Excel tại đây: