
Wie liste ich ALLE Kommentare zum Arbeitsblatt auf einer Registerkarte auf?
Ich weiß, dass das möglich ist, aber ich weiß nicht, wie das geht. Ich möchte der Einfachheit halber eine Seite mit allen Kommentaren im Arbeitsblatt ausdrucken. Irgendwelche Ideen??
Antwort1
Ich hatte bereits eine Funktion, die fast das tat, was Sie wollten, also habe ich sie nur ein wenig optimiert. Dieses Makro ( listComments2
) sollte funktionieren.
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