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

论坛 期权论坛 期权     
VBA编程学习与实践   2019-6-30 09:47   2557   0
今聊下有关单元格批注的其它常用代码,也就是如何批量提取/删除/新增单元格批注等~
1,批量提取单元格批注内容。
以下自定义函数可以提取指定单元格的批注内容。但需要说明的是,由于函数的易失性都是根据单元格的值属性而重算的,当批注发生改变时,值并未改变,因此即便加上Application.Volatile,该函数也不会自动重算——也就是说,当批注内容发生改变后,需要重新运算该函数才可以得到新的批注内容哦。
  1. Function GetComment(Rng As Range)
复制代码
  1.     Dim t As String
复制代码
  1.     If Rng.Comment Is Nothing Then'判断rng是否包含批注
复制代码
  1.         t = ""
复制代码
  1.     Else
复制代码
  1.         t = Rng.Comment.Text
复制代码
  1.     End If
复制代码
  1.     GetComment = t
复制代码
  1. End Function
复制代码

2,批量删除批注
2.1,以下代码是将所选择单元格范围内的批注一股脑全部删除:
  1. Sub DelComment2()
复制代码
  1.     Dim Rng As Range
复制代码
  1.     Set Rng = Application.InputBox("请选择删除批注的单元格范围。", Type:=8)
复制代码
  1.     Rng.ClearComments
复制代码
  1. End Sub
复制代码

2.2,以下代码是有条件的删除指定单元格范围的批注,例如删除批注内容中包含“看见星光”的。
  1. Sub DelComment()
复制代码
  1.   Dim rng As Range, rngEach As Range
复制代码
  1.   Set rng = Application.InputBox("请选择删除批注的单元格范围。", Type:=8)
复制代码
  1.   Set rng = Intersect(rng.Parent.UsedRange, rng) 'Intersect避免选择整列时,造成无谓循环以致代码效率低下。
复制代码
  1.   If rng Is Nothing Then Exit Sub
复制代码
  1.   For Each rngEach In rng
复制代码
  1.     If Not rngEach.Comment Is Nothing Then
复制代码
  1.     '如果单元格有批注……
复制代码
  1.       If rngEach.Comment.Text Like "*看见星光*" Then rngEach.ClearComments
复制代码
  1.       '如果批注内容包含看见星光……则清除
复制代码
  1.     End If
复制代码
  1.   Next
复制代码
  1. End Sub
复制代码
3,批量新增批注
比如将所选择的单元格区域的内容批量新增为批注。

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

题外话:
……拥抱……致安…………

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:220
帖子:44
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP