VBA常用小代码107:如何批量增加/删除/提取单元格批注

admin

excel
  各位朋友们好,我们之前聊过如何将图片批量插入单元格批注中去:VBA常用小代码401:按名称一键将图片批量插入到单元格批注中

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

  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=t

  End Function

  2、批量删除批注

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

  Sub DelComment2()

  Dim Rng As Range

  Set Rng=Application.InputBox("请选择删除批注的单元格范围。",Type:=8)

  Rng.ClearComments

  End Sub

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

  Sub DelComment()

  Dim Rng As Range,Cll As Range

  Set Rng=Application.InputBox("请选择删除批注的单元格范围。",Type:=8)

  Set Rng=Intersect(Rng.Parent.UsedRange,Rng)

  'Intersect避免选择整列时,造成无谓循环以致代码效率低下。

  For Each Cll In Rng

  If Not Cll.Comment Is Nothing Then

  '如果单元格有批注……

  If Cll.Comment.Text Like"*看见星光*"Then Cll.ClearComments

  '如果批注内容包含看见星光……则清除

  End If

  Next

  End Sub

  3、批量新增批注

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

  Sub AddComment()

  Dim rng As Range,Cll As Range

  Set rng=Application.InputBox("请选择增加批注的单元格范围。",Type:=8)

  Set rng=Intersect(rng.Parent.UsedRange,rng)

  'Intersect避免选择整列时,造成无谓循环以致代码效率低下。

  For Each Cll In rng

  If Cll.Comment Is Nothing Then Cll.AddComment

  '如果单元格没有批注……则增加批注

  Cll.Comment.Text Text:=Cll.Value&""'输入批注内容

  Next

  End Sub

  文章来源:Excel之家ExcelHome,微信号:iexcelhome,由中国Excel考试网【http://www.excel.cn/】整理发布,若需引用或转载,请注明来源!

向作者提问

  • 最新评论

验证码: 点击我更换图片
全部评论