【问题标题】:Using VBA to auto update note/comment in Excel使用 VBA 自动更新 Excel 中的注释/注释
【发布时间】:2021-09-01 07:18:49
【问题描述】:

这是我的代码:

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim c As Range
    Dim ws As Worksheet

    For Each c In Intersect(Target, Range("F9:N46"))
        If c.Comment Is Nothing And c.Value <> "" Then
            With c.AddComment
                .Visible = False
                .Text Application.UserName & ":" & Date & " - " & c.Value
            End With
    
        ElseIf Not c.Comment Is Nothing And c.Value <> "" Then
            c.Comment.Text Application.UserName & ":" & Date & " - " & c.Value & vbNewLine & c.Comment.Text
        End If
    Next    
End Sub

问题是,如果我编辑一个不在我定义范围内的单元格,我会收到如下错误:

我怎样才能使这项工作仅适用于单元格 F9:N46?

【问题讨论】:

标签: excel vba foreach


【解决方案1】:

我通过添加If 语句解决了这个问题,如下所示:

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim c As Range
    Dim ws As Worksheet

    If Not Intersect(Target, Range("F9:N46")) Is Nothing Then
        For Each c In Target
            If c.Comment Is Nothing And c.Value <> "" Then
                With c.AddComment
                    .Visible = False
                    .Text Application.UserName & ":" & Date & " - " & c.Value
                End With
        
            ElseIf Not c.Comment Is Nothing And c.Value <> "" Then
                c.Comment.Text Application.UserName & ":" & Date & " - " & c.Value & vbNewLine & c.Comment.Text
            End If
        Next
    End If
End Sub

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-05-30
    • 2017-10-25
    • 1970-01-01
    • 1970-01-01
    • 2010-11-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多