Wendy có một trang tính có khá nhiều dữ liệu trong đó, với dữ liệu chính trong phạm vi C3: P312. Cô ấy muốn có một macro mà nếu cô ấy nhấp vào một ô trong phạm vi dữ liệu này, sẽ đặt dấu “x” vào ô đó.

Không có sự kiện nào mà Excel có thể nhận ra là một “nhấp chuột” vào một ô.

Có lẽ sự kiện gần nhất là sự kiện SelectionChange, được kích hoạt mỗi khi lựa chọn ô thay đổi. Sau đó, trình xử lý sự kiện có thể kiểm tra để đảm bảo rằng lựa chọn ô nằm trong phạm vi C3: P312, rồi đặt dấu “x” vào ô nếu đúng như vậy. Trình xử lý sự kiện sau sẽ làm điều đó:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

Dim rInt As Range     Dim rCell As Range

Set rInt = Intersect(Target, Range("C3:P312"))

If Not rInt Is Nothing Then         For Each rCell In rInt             rCell.Value = "x"

Next     End If     Set rInt = Nothing     Set rCell = Nothing End Sub

Tuy nhiên, có một vấn đề với cách tiếp cận này: Sự kiện SelectionChange không chỉ kích hoạt khi bạn nhấp vào một ô khác mà còn kích hoạt nếu bạn sử dụng bàn phím để di chuyển từ ô này sang ô khác trong trang tính. Điều này có nghĩa là nếu bạn sử dụng bàn phím để di chuyển trang tính, bạn sẽ để lại dấu vết của các ký tự “x” trong mỗi ô mà bạn chuyển tiếp.

Một cách để giải quyết vấn đề này là thay đổi sự kiện kích hoạt việc kiểm tra và thay đổi các ô. Trong khi Excel không có sự kiện “nhấp chuột”, có một sự kiện “nhấp đúp”. Điều này có nghĩa là bạn có thể thay đổi ô mà bạn nhấp đúp chuột vào, như được hiển thị ở đây:

Private Sub Worksheet_BeforeDoubleClick( _             ByVal Target As Range, Cancel As Boolean)

Dim rInt As Range     Dim rCell As Range

Set rInt = Intersect(Target, Range("C3:P312"))

If Not rInt Is Nothing Then         For Each rCell In rInt             rCell.Value = "x"

Next     End If     Set rInt = Nothing     Set rCell = Nothing     Cancel = True 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 (3378) áp dụng cho Microsoft Excel 97, 2000, 2002 và 2003. Bạn có thể tìm phiên bản của mẹo này cho giao diện ribbon của Excel (Excel 2007 trở lên) tại đây: