分享

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

 hercules028 2021-04-16

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社群,进行技术交流和提问,获取更多电子资料。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多