使用VBA向单元格添加注释

问题描述 投票:0回答:5

有没有办法通过将鼠标悬停在单元格上来激活对单元格的评论?我有一系列单元格,当将它们悬停在每个单元格上时,我想从另一张纸中提取相应的注释。悬停事件将从另一张工作表中各自的单元格中提取评论。

注释是字符串值。基本上,我在工作表 1 中有一系列单元格,比如说 A1:A5,当我将鼠标悬停在它们上方并从工作表 2 范围 B1:B5 中提取时,我需要弹出注释。我不会手动执行的原因是因为 Sheet 2 的内容每天都在变化。这就是为什么我想看看是否有 VBA 解决方案。

vba excel excel-2013
5个回答
7
投票

将鼠标悬停在包含评论的任何单元格上,会显示该单元格的评论

这是向单元格添加评论以及更新评论文本的方式

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

2
投票

试试这个代码。

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

1
投票

体积更小 “一体化” 解决方案:

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

    
    


0
投票
此代码将在每次打开工作簿时刷新注释内容。它基于目的地和源的范围。确保首先为单元格范围添加注释。您不需要 VBA。

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
    

-1
投票
我发现,如果工作表单元格先前已格式化并包含数据,VBA 添加注释例程可能无法工作。另外,您必须引用“范围”(“A1”)格式的单元格,而不是“单元格”(行号、列号)格式。以下简短的子内容对我有用(在程序格式化/将数据添加到单元格之前使用):

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
    
© www.soinside.com 2019 - 2024. All rights reserved.