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

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)

相关推荐