У Пегги есть несколько ячеек на листе, с которыми связаны комментарии. Когда она щелкает правой кнопкой мыши по одной из этих ячеек, она может выбрать «Изменить комментарий» в появившемся контекстном меню, чтобы отредактировать комментарий. Если это был комментарий, который она создала в предыдущем сеансе работы с Excel, вполне нормально, что комментарий открывается в другом месте на листе, иногда на расстоянии нескольких экранов. Пегги интересуется, есть ли способ сделать так, чтобы комментарий появлялся рядом с ячейкой, к которой он идет.

Это состояние может быть вызвано несколькими причинами. Например, возможно, что при предыдущем редактировании комментария вы щелкнули границу поля комментария и перетащили комментарий в другое место на листе. Если вы это сделали, Excel запоминает, куда был перемещен комментарий, и всегда отображает его в запомненном месте.

Другая распространенная причина заключается в том, что вы выполняете некоторую фильтрацию своих данных, в результате чего некоторые строки или столбцы скрываются, пока фильтр установлен. Если вы затем отредактируете комментарии в отфильтрованных ячейках, вы фактически «переместите» комментарий из исходного местоположения в новое местоположение, связанное со строкой или столбцом, видимым на экране. Когда вы позже удалите фильтр и попытаетесь отредактировать комментарий, он запоминает, где он был ранее отредактирован, и именно здесь появляется новая возможность редактирования.

В обоих случаях нормальное решение — просто улыбнуться и терпеть — вручную переместить ячейки с того места, где они находятся, туда, где вы хотите.

Однако, если у вас есть эта проблема с большим количеством ячеек, любое ручное перемещение может стать настоящей проблемой. В этом случае вы можете использовать макрос, который сделает перемещение за вас.

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

Этот макрос перемещает все комментарии на листе так, чтобы их левый верхний угол совпадал с правым верхним углом ячейки, к которой они прикреплены. Это помещает комментарии прямо рядом с их ячейками, где вы хотите их.

Если вы хотите настроить все комментарии во всей книге, а также «автоматически изменить размер» каждого поля комментариев, вы можете использовать этот вариант макроса:

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

_Примечание: _

Если вы хотите узнать, как использовать макросы, описанные на этой странице (или на любой другой странице на сайтах ExcelTips), я подготовил специальную страницу, содержащую полезную информацию.

link: / excelribbon-ExcelTipsMacros [Щелкните здесь, чтобы открыть эту специальную страницу в новой вкладке браузера].

ExcelTips — ваш источник экономичного обучения Microsoft Excel.

Этот совет (9703) применим к Microsoft Excel 2007, 2010 и 2013. Вы можете найти версию этого совета для старого интерфейса меню Excel здесь:

link: / excel-Editing_a_Comment_Close_to_Its_Cell [Редактирование комментария рядом с его ячейкой].