威尼斯人网址

VBA代码:批量增加、删除、提取单元格批注

2018/10/11 9:38:52


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,如有侵权请联系删除)

文本标签:vba,代码,单元格,批注,威尼斯人网址管道检测

[下一篇]管道外防腐层PCM检测技术

[上一篇]压力容器无损检测技术及其应用

核心业务

公司成立于1992年

0373-3762840
二维码

扫一扫,关注威尼斯人网址管道

二维码

扫一扫,进入手机官网