暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

问与答116:如何基于单元格的值动态更新批注?

完美Excel 2021-04-16
119

学习Excel技术,关注微信公众号:

excelperfect


Q我想使用VBA代码基于单元格M14的值更新单元格批注,其中单元格M14中的值取决于其它单元格的值,单元格A1的批注接受单元格M14中的内容并根据M14中内容的变化而动态更新。同时,这也应该能够在受保护的工作表中正常运转。

 

如何编写VBA代码?

 

A:首先,单元格M14中应该是一个公式,当其他单元格中的值修改时,M14中的值相应更新。在该工作表代码模块中,输入下面的代码:

Private SubWorksheet_Change(ByVal Target As Range)

    Dim r As Range

    Set r = Intersect(Target,Range("M14").Precedents)

    If r Is Nothing Then Exit Sub

    On Error Resume Next

    With [A1]

        .Comment.Delete

        .Comment.Visible = False

        If [M14] <> 0 Then

            .AddComment

            .Comment.Text CStr([M14])

        End If

    End With

End Sub

 

ThisWorkbook代码模块中,输入下面的代码:

Private Sub Workbook_Open()

    Dim ws As Worksheet

    For Each ws In Worksheets

        'UserInterfaceOnly:=True,允许代码修改数据.

        ws.Protect "ken",UserInterfaceOnly:=True, DrawingObjects:=False, Contents:=True, Scenarios:=True

    Next ws

End Sub

 

这样,当打开工作簿时,保护工作表。

 

注意,应该将与单元格M14相关的单元格的格式设置为“未锁定”,以便在工作表被保护时能够手动修改这些相关单元格。

 

注:今天的问题整理自ozgrid.com论坛,很新颖的用法,供有兴趣的朋友参考。

欢迎在下面留言,完善本文内容,让更多的人学到更完美的知识。

欢迎到知识星球:完美Excel社群,进行技术交流和提问,获取更多电子资料。

文章转载自完美Excel,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论