今聊下有关单元格批注的其它常用代码,也就是如何批量提取/删除/新增单元格批注等~
1,批量提取单元格批注内容。
以下自定义函数可以提取指定单元格的批注内容。但需要说明的是,由于函数的易失性都是根据单元格的值属性而重算的,当批注发生改变时,值并未改变,因此即便加上Application.Volatile,该函数也不会自动重算——也就是说,当批注内容发生改变后,需要重新运算该函数才可以得到新的批注内容哦。
- Function GetComment(Rng As Range)
复制代码- If Rng.Comment Is Nothing Then'判断rng是否包含批注
复制代码
2,批量删除批注
2.1,以下代码是将所选择单元格范围内的批注一股脑全部删除:
- Set Rng = Application.InputBox("请选择删除批注的单元格范围。", Type:=8)
复制代码
2.2,以下代码是有条件的删除指定单元格范围的批注,例如删除批注内容中包含“看见星光”的。
- 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
复制代码- If Not rngEach.Comment Is Nothing Then
复制代码- If rngEach.Comment.Text Like "*看见星光*" Then rngEach.ClearComments
复制代码 3,批量新增批注
比如将所选择的单元格区域的内容批量新增为批注。
- 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
复制代码- If rngEach.Comment Is Nothing Then rngEach.AddComment '如果单元格没有批注……则增加批注
复制代码- rngEach.Comment.Text Text:=rngEach.Value & "" '输入批注内容
复制代码
题外话:
……拥抱……致安…………
|
|