VBA _ Excel范围注释到数组

时间:2017-09-21 07:03:02

标签: excel excel-vba vba

我正在使用excel文件,其中包含以下值和一些单元格注释。 enter image description here

以下VB代码用于将值和注释复制到数组中。

Sub commentToArray()
 arrayValues = Range("A1:A6").Value
 arrayComments = Range("A1:A6").Comment.Text
End Sub

values数组工作正常,但comments数组填充了错误消息。

enter image description here

请你帮我解决一下。

谢谢, Aneesh

1 个答案:

答案 0 :(得分:0)

您的代码有两个错误:

  1. 您不能对一系列多个单元格使用 Comment.Text 方法。
  2. 你不能在不包含评论的单元格上使用 Comment.Text
  3. 这可以为您提供解决方案:

    Sub commentToArray()
        Dim arrayValues As Variant
        Dim ArrayCommnents() As String
        Dim myRange, commentsRange, mycell As Range
        Dim i As Integer
    
        arrayValues = Range("A1:A6").Value
        Set myRange = ActiveSheet.Range("A1:A6")
        Set commentsRange = myRange.Cells.SpecialCells(xlCellTypeComments)
        arrayLenght = commentsRange.Count
        ReDim arrayComments(arrayLenght)
    
        For Each mycell In commentsRange
            i = i + 1
            arrayComments(i) = mycell.Comment.Text
            Debug.Print (arrayComments(i))
        Next mycell
    End Sub
    

    说明:

    • 我使用myRange var和范围来评估评论。 接下来,我需要确定哪个单元格包含注释,这是commentsRange var的目的。
    • 我使用.SpcialCells()方法只获取带注释的单元格。
    • 然后,我得到commentsRange .Count属性的长度。我得到了评论的细胞数量。
    • 需要重新评论一系列评论。
    • For Each循环是在带注释的单元格范围内逐个单元格注释。用于运行数组的增量索引i,你得到它。