Sub Комментарий_в_ячейку_в_диапазоне() 'переносит комментарий в ячейку Dim i As Long Dim c As Range, cc As Range Dim iCommment As Comments Application.DisplayCommentIndicator = xlCommentIndicatorOnly Application.ScreenUpdating = False Application.Calculation = xlCalculationManual Set cc = Selection 'если выделили 1 ячейку, то выход If cc.Rows.Count = 1 And cc.Columns.Count = 1 Then MsgBox "Выделено слишком мало ячеек!", , "Ошибка" End End If Set cc = Selection.SpecialCells(xlCellTypeVisible) For Each c In cc If Not c.Comment Is Nothing Then c.Value = c.Comment.Text 'c.ClearComments 'если надо удалить комментарий i = i + 1 End If End If Next Application.Calculation = xlCalculationAutomatic Application.ScreenUpdating = True MsgBox "Перенесено " & i & " комментариев!" Exit Sub End Sub
P.S. А перенос значений из ячейки в комментарий, так
Sub Добавить_комментарий_в_диапазоне() 'копирует значение ячейки в комментарий в видемом диапазоне Dim c As Range, cc As Range Dim i As Long On Error GoTo ErrorHandler Application.DisplayCommentIndicator = xlCommentIndicatorOnly Set cc = Selection 'если выделили 1 ячейку, то выход If cc.Rows.Count = 1 And cc.Columns.Count = 1 Then MsgBox "Выделено слишком мало ячеек!", , "Ошибка" End End If Set cc = Selection.SpecialCells(xlCellTypeVisible) For Each c In cc If c.Value <> Empty Then c.AddComment CStr(c.Value) i = i + 1 End If Next MsgBox "Добавлено " & i & " комментарий!" Exit Sub End Sub
'Работа с комментариями '1) меняем штрифт у комментария в заданной ячейке Range("D10").Comment.Shape.TextFrame.Characters.Font.Size
'2) изменяем размер окошка всех примечаний на листе ровно под текст (AutoSize) Sub All_Comments_Size_Change() Dim iComment As Comment For Each iComment In ActiveSheet.Comments iComment.Shape.TextFrame.AutoSize = True Next iComment End Sub
'3) добавляем комментарий в ячейку и меняем его шрифт Sub ChangeFontInComment() With Range("B2") .ClearComments .AddComment .Comment.Text "бла-бла-бла" With .Comment.Shape.TextFrame.Characters.Font .Name = "Times New Roman" .Size = 14 .Bold = True End With End With End Sub
'4) меняем шрифт у всех комментариев Sub All_Comments_Font_Change() Dim iComment As Comment For Each iComment In ActiveSheet.Comments With iComment.Shape.TextFrame.Characters.Font .Name = "Times New Roman" .Size = 14 .Bold = True End With Next iComment End Sub
'5) устанавливаем высоту и ширину окна примечания Sub Change_Size_Comment_Window() With Range("A1") .AddComment "Bla-bla-bla" With .Comment.Shape .Width = 100 .Height = 200 .Visible = True End With End With End Sub
'6) устанавливаем высоту и ширину для всех примечаний Sub Размер_Комментарий() Dim iComment As Comment For Each iComment In ActiveSheet.Comments iComment.Shape.TextFrame.AutoSize = True iComment.Shape.Height = iComment.Shape.Height + 10 iComment.Shape.Width = iComment.Shape.Width + 15 Next iComment MsgBox "Размеры комментарий исправлены!", vbInformation, "Комментарии" End Sub
'7 устанавливаем размер окна комментария AutoSize и меняем свойство окно на "Перемещать, но не именять размеры" Sub AutoSizeMoveDontChangeSizeComments() 'Свойство XlPlacement объекта Shape может быть одним из этих констант (Формат примечания/Свойства/) '- xlFreeFloating - не перемещать и не изменять размеры '- xlMove - перемещать, но не именять размеры '- xlMoveAndSize - перемещать и изменять объект вместе с ячейками Dim iComment As Comment For Each iComment In ActiveSheet.Comments With iComment.Shape .TextFrame.AutoSize = True .Placement = xlMove 'перемещать, но не именять размеры End With Next iComment MsgBox "Все комментарии обработаны!", 64, "Конец" End Sub
'8 Добавление даты в комментарий Private Sub Worksheet_Change(ByVal Target As Range) 'если изменения в диапазоне A1:A10 If Not Intersect(Target, Range("A1:A10")) Is Nothing Then 'если выделили больше одной ячейке, то выход If Selection.Cells.Count > 1 Then Exit Sub Target.NoteText Text:=Application.UserName & Chr(10) & "Дата: " & Now End If End Sub