分享

【Excel VBA】如何批量增加/删除/提取单元格批注

 hercules028 2020-01-23

今聊下有关单元格批注的其它常用代码,也就是如何批量提取/删除/新增单元格批注等~

1,批量提取单元格批注内容。

以下自定义函数可以提取指定单元格的批注内容。但需要说明的是,由于函数的易失性都是根据单元格的值属性而重算的,当批注发生改变时,值并未改变,因此即便加上Application.Volatile,该函数也不会自动重算——也就是说,当批注内容发生改变后,需要重新运算该函数才可以得到新的批注内容哦。

Function GetComment(Rng As Range) Dim t As String If Rng.Comment Is Nothing Then'判断rng是否包含批注 t = '' Else t = Rng.Comment.Text End If GetComment = tEnd Function

2,批量删除批注

2.1,以下代码是将所选择单元格范围内的批注一股脑全部删除:

Sub DelComment2()    Dim Rng As Range    Set Rng = Application.InputBox('请选择删除批注的单元格范围。', Type:=8)    Rng.ClearCommentsEnd Sub

2.2,以下代码是有条件的删除指定单元格范围的批注,例如删除批注内容中包含“看见星光”的。

Sub DelComment() Dim rng As Range, rngEach As Range Set rng = Application.InputBox('请选择删除批注的单元格范围。', Type:=8) Set rng = Intersect(rng.Parent.UsedRange, rng) 'Intersect避免选择整列时,造成无谓循环以致代码效率低下。 If rng Is Nothing Then Exit Sub For Each rngEach In rng If Not rngEach.Comment Is Nothing Then '如果单元格有批注…… If rngEach.Comment.Text Like '*看见星光*' Then rngEach.ClearComments '如果批注内容包含看见星光……则清除 End If NextEnd Sub

3,批量新增批注

比如将所选择的单元格区域的内容批量新增为批注。

Sub AddComment()    Dim rng As Range, rngEach As Range    Set rng = Application.InputBox('请选择增加批注的单元格范围。', Type:=8)    Set rng = Intersect(rng.Parent.UsedRange, rng) 'Intersect避免选择整列时,造成无谓循环以致代码效率低下。    If rng Is Nothing Then Exit Sub    For Each rngEach In rng        If rngEach.Comment Is Nothing Then rngEach.AddComment '如果单元格没有批注……则增加批注        rngEach.Comment.Text Text:=rngEach.Value & '' '输入批注内容    NextEnd Sub

题外话:

……拥抱……致安…………

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

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多