Страницы: 1
RSS
VBA. Комментарии в ячейках
 
Подскажите, как достучаться до комментариев? Считывать и устанавливать их значение.  
 
 
TempRow.Cells(j + 1).Comment.Text "1234567890"  
 
Это я пробовал. Не выходит. Пишет обьект не определен.
 
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  
 
 
 
http://www.planetaexcel.ru/forum.php?thread_id=4475
 
Ну, приблизительно так  
 
'Работа с комментариями  
'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
 
Ну и самое простое  
 
Sub Макрос1()  
   With Range("A1")  
       .AddComment  
       .Comment.Text Text:="123"  
   End With  
End Sub
 
то биш (позволю себе резюмировать) перед присвоением комментарию текста, его(комментарий) нужно сначала создать.
Страницы: 1
Читают тему
Наверх