将注释添加到Range中的特定单元格。 Excel VBA

时间:2017-11-15 00:28:15

标签: excel vba excel-vba comments

如果符合条件,我会尝试在范围内的特定单元格中添加注释。所以我在Sheet1中有一个列表,其中包含信息。我也在sheet16上有单元格值,我希望U列中的注释,所以它会在行U中说F6。我一直在

  

应用程序定义或对象定义的错误

有什么想法吗?

先谢谢。

Sub Comments()

    Dim rcell As Range

    Sheet16.Range("C6:AR17").ClearComments

    For Each rcell In Sheet1.Range("A2:A" & Sheet1.Range("A" & Sheet1.Rows.CountLarge).End(xlUp).Row)
        If rcell.Offset(0, 1).Value(10) = Sheet7.Range("G1").Value(10) Then
            commentvalue = rcell.Offset(0, 4).Value
            Sheet16.Range("U" & rcell.Row).AddComment (commentvalue)
        End If
    Next rcell

End Sub

1 个答案:

答案 0 :(得分:1)

如果已对单元格发表评论,AddComment方法将失败。这样做:

Sub Comments()
    Dim rcell As Range
    Dim commentvalue As String

    Sheet16.Range("C6:AR17").ClearComments

    For Each rcell In Sheet1.Range("A2:A" & Sheet1.Range("A" & Sheet1.Rows.CountLarge).End(xlUp).row)
        If rcell.Offset(0, 1).Value = Sheet7.Range("G1").Value Then
            commentvalue = CStr(rcell.Offset(0, 4).Value)

            With Sheet16.Range("U" & rcell.row)
                .ClearComments '<=== :-)
                .AddComment commentvalue
            End With
        End If
    Next rcell
End Sub

修改

根据@ Jeeped的评论,你可能希望“累积”评论。我的假设是你运行了一次代码,然后再次运行它并点击错误,因为第一次运行创建了注释。根据您尝试实现的目标,您可能希望系统地清除U行中从第2行到最后一行(循环外)的注释,并删除循环中的.ClearComments,以便开始清理每个时间。这是最简单的情况。如果它更复杂的话,我会让你弄清楚细节。