پگی چندین سلول در یک کاربرگ دارد که دارای نظرات مرتبط با آنها هستند. وقتی روی یکی از این سلولها کلیک راست میکند، میتواند ویرایش نظر را از منوی زمینه ایجاد شده برای ویرایش نظر انتخاب کند. اگر نظری بود که او در جلسه قبلی با اکسل ایجاد کرده بود، باز شدن نظر در جای دیگری از کاربرگ، گاهی اوقات چندین صفحه دورتر، غیرعادی نیست. پگی به این فکر می کند که آیا راهی برای نمایش نظر در کنار سلولی که با آن همراه است وجود دارد؟
این وضعیت می تواند به دلایل مختلفی ایجاد شود. به عنوان مثال، ممکن است در حالی که قبلاً نظر را ویرایش میکردید، روی حاشیه کادرهای نظر کلیک کرده و نظر را به مکان دیگری در کاربرگ میکشیدید. اگر این کار را انجام دادید، اکسل به خاطر میآورد که نظر به کجا منتقل شده است و همیشه آن را در مکان به خاطر سپردهشده نمایش میدهد.
یکی دیگر از دلایل رایج این است که مقداری فیلتر روی دادههای خود انجام میدهید، که منجر به پنهان شدن برخی از ردیفها یا ستونها در حالی که فیلتر در جای خود است. اگر بعداً نظرات را در سلولهای فیلتر شده ویرایش کنید، عملاً نظر را از مکان اصلی به مکان جدیدی منتقل کردهاید که با سطر یا ستون قابل مشاهده در صفحه مرتبط است. وقتی بعداً فیلتر را حذف میکنید و سعی میکنید نظر را ویرایش کنید، به یاد میآورد که قبلاً کجا ویرایش شده است، و در آنجا فرصت ویرایش جدید ایجاد میشود.
در هر دوی این موارد، راه حل عادی این است که فقط پوزخند بزنید و آن را تحمل کنید - سلول ها را به صورت دستی از جایی که هستند به جایی که می خواهید منتقل کنید. با این حال، اگر شما این مشکل را با تعداد زیادی سلول دارید، همه جابجایی دستی می تواند یک آزار واقعی باشد. در این صورت، ممکن است بخواهید از یک ماکرو برای انجام حرکت برای شما استفاده کنید.
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