Grant có một ô trong trang tính mà khi ai đó bắt đầu nhập vào ô đó, anh ta muốn bất kỳ thứ gì họ nhập sẽ kết thúc trong một nhận xét được đính kèm với ô đó. Bản thân ô phải để trống, nhưng nhận xét phải chứa bất cứ điều gì đã được nhập.

Cách duy nhất để hoàn thành nhiệm vụ này là sử dụng macro.

Sử dụng các khả năng xử lý sự kiện của Excel, bạn có thể tạo một macro được kích hoạt bất cứ khi nào một ô được thay đổi. Nếu ô đã thay đổi là ô mà bạn muốn nhận xét được liên kết với, thì bạn có thể chuyển nội dung ô vào nhận xét và xóa chúng khỏi chính ô đó. Macro ngắn sau đây sẽ làm điều đó:

Private Sub Worksheet_Change(ByVal Target As Range)

Dim rCell As Range     Dim sTemp As String

Set rCell = Range("B4")

If Not Intersect(Target, rCell) Is Nothing Then         sTemp = rCell.Value         rCell.ClearComments         If Len(sTemp) > 0 Then             Application.EnableEvents = False             On Error Resume Next             rCell.AddComment             rCell.Comment.Text Text:=sTemp             On Error GoTo 0             rCell.ClearContents             Application.EnableEvents = True         End If     End If End Sub

Lưu ý rằng vì đây là một trình xử lý sự kiện, nó cần được thêm vào mô-đun mã cho trang tính bạn muốn bị ảnh hưởng. Trong trường hợp này, mã chuyển đến nhận xét chỉ được kích hoạt khi thay đổi được thực hiện trong ô B4; địa chỉ này có thể được thay đổi trong mã, nếu muốn.

Cũng cần lưu ý rằng macro này chỉ được kích hoạt sau khi người dùng nhập xong nội dung nào đó vào ô B4. Nó không được kích hoạt khi người dùng bắt đầu nhập. Vì vậy, việc nhập dữ liệu thực tế vẫn xảy ra trong ô B4, không phải trong chính nhận xét. Hơn nữa, nếu ai đó nhập nội dung nào đó vào ô B4, thì mọi nhận xét hiện có sẽ bị mất vì macro xóa nó trước khi chuyển nội dung ô vào nhận xét.

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

Mẹo này (13511) áp dụng cho Microsoft Excel 2007, 2010, 2013 và 2016.