У Гранта есть ячейка на листе, и когда кто-то начинает печатать в ней, он хотел бы, чтобы все, что они набирали, попало в комментарий, прикрепленный к ячейке. Сама ячейка должна оставаться пустой, но комментарий должен содержать все, что было набрано.

Единственный способ выполнить эту задачу — использовать макрос.

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

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, то любой существующий комментарий теряется, потому что макрос удаляет его перед перемещением содержимого ячейки в комментарий.

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

Этот совет (13511) применим к Microsoft Excel 2007, 2010, 2013 и 2016.