
¿Cómo enumerar TODOS los comentarios en la hoja de trabajo en una pestaña?
Sé que esto es posible, pero no sé cómo hacerlo. Me gustaría imprimir una página de todos los comentarios contenidos en la hoja de trabajo para facilitar su uso. ¿¿Algunas ideas??
Respuesta1
Ya tenía una función que casi hacía lo que me pedís, así que la modifiqué un poco. Esta macro ( listComments2
) debería funcionar.
Sub listComments2()
'Thanks to http://superuser.com/a/809212/529100
Dim commentWS As Worksheet
Application.ScreenUpdating = False
Set commentWS = ActiveWorkbook.Worksheets.Add(after:=ActiveWorkbook.Worksheets(Sheets.Count))
commentWS.Name = "Comments"
Dim cmts As New Collection
For Each ws In ActiveWorkbook.Worksheets
If ws.Name <> "Comments" Then
For Each cmt In ws.Comments
cmts.Add cmt.Text
Next cmt
End If
Next ws
Dim commentArray() As Variant
commentArray = toArray(cmts)
Dim i As Long
For i = LBound(commentArray) To UBound(commentArray)
With commentWS
.Cells(i, 1).Value = commentArray(i)
End With
Next i
' Reformat columns/worksheet
With commentWS.Cells
.HorizontalAlignment = xlGeneral
.VerticalAlignment = xlBottom
.WrapText = True
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False
.HorizontalAlignment = xlGeneral
.VerticalAlignment = xlBottom
.WrapText = False
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False
.EntireColumn.AutoFit
End With
Application.ScreenUpdating = True
End Sub
Function toArray(cmt As Collection)
Dim i As Long
Dim arr() As Variant
ReDim arr(1 To cmt.Count) As Variant
For i = 1 To cmt.Count
arr(i) = cmt(i)
Next i
toArray = arr
End Function