Вывод на экран всех примечаний рабочего листа
Применив несложный трюк, можно вывести все примечания, содержащиеся на рабочем листе или в выделенном его диапазоне, в ячейки, расположенные справа от соответствующих примечаний. Решить эту задачу поможет такой макрос (листинг 3.35).
Листинг 3.35. Список примечаний
Sub ShowComments()
Dim cell As Range
Dim rgCells As Range
' Получение всех ячеек с примечаниями
Set rgCells = Selection.SpecialCells(xlComments)
If rgCells Is Nothing Then
' Примечаний нет
Exit Sub
End If
' Проходим по всем ячейкам диапазона
For Each cell In rgCells
' Вывод примечаний в соседнюю ячейку
cell.Next.Value = cell.Comment.Text
Next
End Sub
Данный макрос можно применять как к предварительно выделенному диапазону, так и к рабочему листу целиком.
Примечание
Если рабочий лист защищен, то данный макрос работать не будет.
Для защищенных (а также остальных) рабочих листов можно применить такой макрос (листинг 3.36).
Листинг 3.36. Список примечаний защищенных листов
Sub ShowComments1()
Dim cell As Range
Dim strFirstAddress As String
Dim strComments As String
' Получаем все ячейки выделения, в которых есть комментарий
Set cell = Selection.Find("*", LookIn:=xlComments)
If Not cell Is Nothing Then
' Сохранение адреса первой найденной ячейки _
(для предотвращения зацикливания поиска)
strFirstAddress = cell.Address
Do
' Добавление текста примечания в выходную строку
strComments = strComments & "Комментарий: " & _
cell.Comment.Text & Chr(13)
' Продолжение поиска
Set cell = Selection.FindNext(cell)
Loop While Not cell Is Nothing And _
cell.Address <> strFirstAddress
End If
If strComments <> "" Then
' Отображение окна с текстом примечаний
MsgBox strComments
Else
MsgBox «В выделенной ячейке/ячейках комментариев нет»
End If
End Sub
Данный макрос работает только с предварительно выделенным диапазоном рабочего листа.