在Excel

时间:2017-06-22 13:23:26

标签: excel vba excel-vba

我有一个非常大的ex​​cel文件,在不同的单元格上有数百个笔记。我想提取每行的注释内容并将它们放在自己的列中。例如,如果我在第1行中有3个注释,则这些注释中的文本将放在U1中。如果在第2行中有4条评论,则这4条评论将在U2中,因此一条评论。到目前为止,我正在使用VBA执行此操作,但是无法让它们按行分开。

Sub CopyCommentsToCol()
Dim i As Integer
i = 2
Dim Rng As Range
Dim cell As Range
Dim row As Range
Dim commrange As Range
Dim curwks As Worksheet

Set Rng = Range("A2:A5") 'Test Range for now
Set curwks = ActiveSheet

On Error Resume Next
  Set commrange = curwks.Cells _
      .SpecialCells(xlCellTypeComments)
On Error GoTo 0


On Error Resume Next
If Err.Number <> 0 Then
  Err.Clear
End If

For Each row In Rng.Rows
    For Each cell In commrange 'Application.ActiveCell.Comment
        If cell.Comment <> Empty Then
            Range("$U$" & i) = Range("$U$" & i).Text & cell.Comment.Text 
        End If

    Next cell
    i = i + 1
Next row
End Sub

此vba代码目前将所有笔记放在我指定的测试范围内。不只是他们自己行中的笔记。我理解我的错误,内部for循环遍历整个工作表。我只是不知道如何解决这个问题。

修改

For Each row In Rng.Rows
    Set commrange = row.SpecialCells(xlCellTypeComments)
    For Each cell In commrange
        If cell.Comment <> Empty Then
            Range("$U$" & i) = Range("$U$" & i).Text & cell.Comment.Text
        End If
    Next cell
    i = i + 1
Next row

1 个答案:

答案 0 :(得分:2)

您可以使用RETRY集合。像

这样的东西
Rows

更新:

由于第一个想法不起作用,您可以检查For Each row In yourRange.Rows 'collect comments Next row 并在单元格中添加文本时使用它。

cell.Row