Peggy在工作表中有几个单元格,这些单元格具有与之关联的注释。在这些单元格之一上单击鼠标右键时,可以从出现的“上下文”菜单中选择“编辑评论”,以便编辑评论。如果注释是她在上一个使用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_网站上的任何其他页面)中描述的宏,我准备了一个特殊页面,其中包含有用的信息。

_ExcelTips_是您进行经济高效的Microsoft Excel培训的来源。

本技巧(9703)适用于Microsoft Excel 2007、2010和2013。您可以在以下版本的Excel的较旧菜单界面中找到本技巧的版本: