HI,大家好,我是星光。
今天给大家聊一下如何使用VBA编程控制Excel批注,这包含了批量创建批注、提取批注内容、调整批注大小和位置、快速删除批注等。
1,
批量创建批注
以下代码可以将指定单元格区域的值填入批注中。
Sub AddComment()
Dim rng As Range, Cll As Range
Set rng = Application.InputBox('请选择增加批注的单元格范围。', Type:=8)
Set rng = Intersect(rng.Parent.UsedRange, rng)
For Each Cll In rng
If Cll.Comment Is Nothing Then Cll.AddComment '如果单元格没有批注……则增加批注
Cll.Comment.Text Text:=Cll.Value & '' '输入批注内容
Next
End Sub
2,
批量提取批注中的内容
以下自定义函数可以将指定单元格区域的批注内容取出:
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
3,
批量调整批注的位置
有时候因为某些操作,会将批注的位置拉变形,此时可以使用以下代码调整批注的位置到原单元格处。
Sub t()
Dim c As Comment
For Each c In ActiveSheet.Comments
With c
.Shape.Top = .Parent.Top - 8 '右上角位置
.Shape.Left = .Parent.Left + 8 '左下角位置
.Shape.Width = .Parent.Width * 2 '宽度
.Visible = False '不可见
End With
Next
End Sub
4,
批量删除批注
以下代码删除指定范围内的所有批注:
Sub DelComment2()
Dim Rng As Range
Set Rng = Application.InputBox('请选择删除批注的单元格范围。', Type:=8)
Rng.ClearComments
End Sub
以下代码删除指定范围内包含特定关键字的批注,比如包含关键字'看见星光':
Sub DelComment()
Dim Rng As Range, Cll As Range, strTemp As String
On Error Resume Next
Set Rng = Application.InputBox('请选择删除批注的单元格范围。', Type:=8)
Set Rng = Intersect(Rng.Parent.UsedRange, Rng)
If Rng Is Nothing Then Exit Sub
strTemp = '看见星光'
For Each Cll In Rng
If Not Cll.Comment Is Nothing Then
If InStr(strTemp, Cll.Comment.Text) Then Cll.ClearComments
End If
Next
End Sub
……
除此之外,还可以将图片批量插入批注中,当鼠标滑过单元格,自动显示图片,相关代码参考教程:当鼠标滑过单元格时,Excel就会自动显示相关图片……
没了,今天给大家分享的内容就这样,打完收工,咱们下期再见。
联系客服