Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 如何检索单元格注释的文本_Excel_Vba - Fatal编程技术网

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