有没有办法通过将鼠标悬停在单元格上来激活对单元格的评论?我有一系列单元格,当将它们悬停在每个单元格上时,我想从另一张纸中提取相应的注释。悬停事件将从另一张工作表中各自的单元格中提取评论。
注释是字符串值。基本上,我在工作表 1 中有一系列单元格,比如说 A1:A5,当我将鼠标悬停在它们上方并从工作表 2 范围 B1:B5 中提取时,我需要弹出注释。我不会手动执行的原因是因为 Sheet 2 的内容每天都在变化。这就是为什么我想看看是否有 VBA 解决方案。
将鼠标悬停在包含评论的任何单元格上,会显示该单元格的评论
这是向单元格添加评论以及更新评论文本的方式
Sub aaa()
With Range("E6")
If Not .Comment Is Nothing Then .Comment.Delete
.AddComment "this is a comment"
.Comment.Text "abc123" 'No need the assignment sign "=" after .Comment.Text
End With
End Sub
试试这个代码。
Sub test()
Dim rngDB As Range, rngComent As Range
Dim rng As Range
Dim cm As Comment, i as integer
Set rngComent = Sheets(1).Range("a1:a5")
Set rngDB = Sheets(2).Range("b1:b5")
For Each rng In rngComent
i = i + 1
If Not rng.Comment Is Nothing Then
rng.Comment.Delete
End If
Set cm = rng.AddComment
With cm
.Visible = False
.Text Text:=rngDB(i).Value
End With
Next rng
End Sub
Sub comment(rg As Range, Optional txt As String = "")
If rg.comment Is Nothing Then
If txt <> "" Then rg.addComment txt
Else
If txt = "" Then rg.comment.Delete Else rg.comment.text txt
End If
End Sub
以单元格
[a1]
为例 ...但是 像 [a1]
) 这样的快捷符号通常应该避免,除非用于测试等
comment [a1], "This is my comment!"
comment [a1], ""
或简单地comment [a1]
[a1].comment.Shape.Width = 15
和[a1].comment.Shape.Height = 15
[a1].comment.Shape.Left=10
和[a1].comment.Shape.Top=10
[a1].comment.Shape.Fill.ForeColor.RGB = vbGreen
现在我认为评论(或“注释”,因为它们现在被称为)默认情况下是隐藏的。
始终显示所有评论:Application.DisplayCommentIndicator=1
悬停在单元格上时显示:Application.DisplayCommentIndicator=-1
禁用评论(隐藏红色指示器):Application.DisplayCommentIndicator=0
显示/隐藏个人评论,例如[a1].comment.visible=true
等
获取评论文字:a=[a1].comment.text
Private Sub Workbook_Open()
Dim ws As Worksheet
Dim rg As Range
Dim comment As String
Dim i As Integer
i = 1
Set rg = Range("E1:E10") 'set range of where the comments will be seen
Set ws = Sheets("Sheet1")
For Each c In rg
comment = ws.Cells(i, 2).Value 'set location of comments you are grabbing from
c.comment.Text Text:=comment
i = i + 1
Next c
End Sub
Sub Mod01AddComment()
Dim wb As Workbook
Set wb = ThisWorkbook
Dim WkSheet As Worksheet
Set WkSheet = wb.Sheets("Sheet1")
Dim CellID As Range
Set CellID = WkSheet.Cells(RowNum, ColNum)
` ( or, Set CellID = WkSheet.Range("A1") )
CellID.Clear
CellID.AddComment
CellID.Comment.Visible = False
CellID.Comment.Text Text:="Comment Text"
End Sub