Excel 如何检索单元格注释的文本
我发现有很多创建单元格注释的示例,但没有一个用于检索单元格注释的文本。我遗漏了一些明显的东西吗?Excel 如何检索单元格注释的文本,excel,vba,Excel,Vba,我发现有很多创建单元格注释的示例,但没有一个用于检索单元格注释的文本。我遗漏了一些明显的东西吗?范围。注释。文本在这里似乎没有任何问题 (例如,如果不是ActiveCell.Comment什么都不是,那么debug.print ActiveCell.Comment.Text)尝试: Dim comtext as string If ActiveCell.Comment Is Nothing Then comtext = "" Else comte
范围。注释。文本在这里似乎没有任何问题
(例如,如果不是ActiveCell.Comment什么都不是,那么debug.print ActiveCell.Comment.Text
)尝试:
Dim comtext as string
If ActiveCell.Comment Is Nothing Then
comtext = ""
Else
comtext = ActiveCell.Comment.Text
End If
至于我,如果要将注释文本粘贴为其他单元格值,可能需要使用:
Selection.ClearFormats
因为有时候,粘贴或设置单元格值的注释文本一开始可能是不可见的
这是我在这方面的第一篇文章,所以我刚刚开始学习诀窍。谢谢。我不知道我在做什么,但它产生了一个错误。虽然这段代码可能会解决这个问题,但如何以及为什么解决这个问题将真正有助于提高您的帖子质量,并可能导致更多的投票。请记住,你是在将来回答读者的问题,而不仅仅是现在提问的人。请在回答中添加解释,并说明适用的限制和假设。
Option Explicit
Sub ExtractComments()
Dim ExComment As Comment
Dim OneCommentThreaded As CommentThreaded
Dim OneReply As Excel.CommentThreaded
Dim i As Integer
Dim ws As Worksheet
Dim CurrentSheet As Worksheet
For Each ws In Worksheets
If ws.Name = "Comments" Then
i = 1
ws.Columns("A:X").EntireColumn.Delete
End If
Next ws
If i = 0 Then
Set ws = Worksheets.Add(After:=ActiveSheet)
ws.Name = "Comments"
Else: Set ws = Worksheets("Comments")
End If
ws.Range("A1").Value = ActiveWorkbook.Name
'Set headings
ws.Range("A2").Value = "Lp"
ws.Range("B2").Value = "Sheet"
ws.Range("C2").Value = "Cell"
ws.Range("D2").Value = "Commented text"
ws.Range("E2").Value = "Comment"
ws.Range("F2").Value = "Author"
ws.Range("G2").Value = "Date"
ws.Range("H2").Value = "Type of comment"
With ws.Range("A2:H2")
.Font.Bold = True
.Interior.Color = RGB(189, 215, 238)
.Columns("B").ColumnWidth = 30
.Columns("D:F").ColumnWidth = 30
.Columns("G").ColumnWidth = 15
.Columns("H").ColumnWidth = 30
End With
With ws.Range("A1:B1").Interior
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
.Color = 65535
.TintAndShade = 0
.PatternTintAndShade = 0
End With
'Retrieve old comments
For Each CurrentSheet In Worksheets
'loop for old style comments
For Each ExComment In CurrentSheet.Comments
ws.Range("A1").End(xlDown).Offset(1, 0) = ws.Range("A1").End(xlDown).Row - 1
ws.Range("A1").End(xlDown).Offset(0, 1) = CurrentSheet.Name
ws.Range("A1").End(xlDown).Offset(0, 2) = ExComment.Parent.Address
ws.Range("A1").End(xlDown).Offset(0, 3) = ExComment.Parent.Value
ws.Range("A1").End(xlDown).Offset(0, 4) = Right(ExComment.Text, Len(ExComment.Text) - InStr(1, ExComment.Text, ":"))
ws.Range("A1").End(xlDown).Offset(0, 5) = ExComment.Author
ws.Range("A1").End(xlDown).Offset(0, 7) = "Note"
Next ExComment
'loop for new style threaded comments
For Each OneCommentThreaded In CurrentSheet.CommentsThreaded
ws.Range("A1").End(xlDown).Offset(1, 0) = ws.Range("A1").End(xlDown).Row - 1
ws.Range("A1").End(xlDown).Offset(0, 1) = CurrentSheet.Name
ws.Range("A1").End(xlDown).Offset(0, 2) = OneCommentThreaded.Parent.Address
ws.Range("A1").End(xlDown).Offset(0, 3) = OneCommentThreaded.Parent.Value
ws.Range("A1").End(xlDown).Offset(0, 4) = OneCommentThreaded.Text
ws.Range("A1").End(xlDown).Offset(0, 5) = OneCommentThreaded.Author.Name
ws.Range("A1").End(xlDown).Offset(0, 6) = Format(OneCommentThreaded.Date, "dd/MM/yyyy")
ws.Range("A1").End(xlDown).Offset(0, 7) = "Threaded comment"
For Each OneReply In OneCommentThreaded.Replies
With OneReply
ws.Range("A1").End(xlDown).Offset(1, 0) = ws.Range("A1").End(xlDown).Row - 1
ws.Range("A1").End(xlDown).Offset(0, 1) = CurrentSheet.Name
ws.Range("A1").End(xlDown).Offset(0, 2) = OneReply.Parent.Parent.Address
ws.Range("A1").End(xlDown).Offset(0, 3) = OneReply.Parent.Parent.Value
ws.Range("A1").End(xlDown).Offset(0, 4) = OneReply.Text
ws.Range("A1").End(xlDown).Offset(0, 5) = OneReply.Author.Name
ws.Range("A1").End(xlDown).Offset(0, 6) = Format(OneReply.Date, "dd/MM/yyyy")
ws.Range("A1").End(xlDown).Offset(0, 7) = "REPLY ON Threaded comment"
End With
Next OneReply
Next OneCommentThreaded
Next CurrentSheet
ws.Range("A2:H100000").WrapText = False
ws.Range("A2:H2").AutoFilter
End Sub