Peggy có một số ô trong trang tính có các nhận xét được liên kết với chúng. Khi nhấp chuột phải vào một trong những ô này, cô ấy có thể chọn Chỉnh sửa Nhận xét từ menu Ngữ cảnh kết quả để chỉnh sửa nhận xét. Nếu nhận xét là nhận xét mà cô ấy đã tạo trong phiên trước đó bằng Excel, thì không có gì lạ khi nhận xét mở ra ở nơi khác trong trang tính, đôi khi cách đó vài màn hình. Peggy đang tự hỏi liệu có cách nào để làm cho nhận xét xuất hiện bên cạnh ô mà nó đi kèm.

Tình trạng này có thể do một số nguyên nhân. Ví dụ: có thể trong khi chỉnh sửa nhận xét trước đó, bạn đã nhấp vào đường viền của hộp nhận xét và kéo nhận xét đến một vị trí khác trên trang tính. Nếu bạn đã làm điều này, thì Excel sẽ nhớ nơi nhận xét được chuyển đến và luôn hiển thị nhận xét đó ở vị trí đã nhớ.

Một nguyên nhân phổ biến khác là bạn thực hiện một số lọc trên dữ liệu của mình, dẫn đến một số hàng hoặc cột bị ẩn trong khi bộ lọc được đặt. Sau đó, nếu bạn chỉnh sửa nhận xét trong các ô đã lọc, bạn đã “di chuyển” nhận xét từ vị trí ban đầu sang vị trí mới một cách hiệu quả được liên kết với hàng hoặc cột hiển thị trên màn hình. Sau đó, khi bạn xóa bộ lọc và cố gắng chỉnh sửa nhận xét, nhận xét sẽ nhớ vị trí đã được chỉnh sửa trước đó và đó là nơi diễn ra cơ hội chỉnh sửa mới.

Trong cả hai trường hợp này, giải pháp thông thường là chỉ cần cười toe toét và chịu đựng — di chuyển thủ công các ô từ vị trí của chúng đến nơi bạn muốn.

Tuy nhiên, nếu bạn gặp vấn đề này với rất nhiều ô, tất cả các thao tác di chuyển bằng tay có thể là một điều phiền toái thực sự. Trong trường hợp đó, bạn có thể muốn sử dụng macro để thực hiện việc di chuyển cho mình.

Sub MoveComments1()

Dim cmt As Comment

For Each cmt In ActiveSheet.Comments         With cmt           .Shape.Top = .Parent.Top           .Shape.Left = .Parent.Offset(0, 1).Left         End With     Next cmt End Sub

Macro này di chuyển tất cả các nhận xét trong trang tính sao cho góc trên bên trái của chúng giống với góc trên bên phải của ô mà chúng được đính kèm. Điều này đặt các nhận xét ngay bên cạnh ô của chúng, đó là nơi bạn muốn chúng.

Nếu bạn muốn điều chỉnh tất cả các nhận xét trong toàn bộ sổ làm việc, cũng như “tự động hóa” từng hộp nhận xét, thì bạn có thể sử dụng biến thể này trên macro:

Sub MoveComments2()

Dim wbk As Workbook     Dim wks As Worksheet     Dim cmt As Comment     Dim rngC As Range     Dim lArea As Long

Set wbk = ActiveWorkbook

On Error Resume Next

For Each wks In wbk.Worksheets         For Each cmt In wks.Comments             With cmt                 .Shape.TextFrame.AutoSize = True                 If .Shape.Width > 200 Then                     lArea = .Shape.Width  .Shape.Height                     .Shape.Width = 200                     .Shape.Height = (lArea / 200)  1.1                 End If                 .Shape.Top = .Parent.Top                 .Shape.Left = .Parent.Offset(0, 1).Left             End With         Next cmt     Next wks 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 (9703) áp dụng cho Microsoft Excel 2007, 2010 và 2013. 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: