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