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