You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Excel VBA:如何为Sheet1指定单元格添加Sheet2 B9的批注?

给Sheet1目标单元格添加批注的实现方法

嘿,你已经搞定了数据从Sheet2到Sheet1的写入,现在要加批注的需求其实很容易实现。我给你两种方案,分别对应不同的场景:

场景1:覆盖原有批注(只保留最新的B9内容)

如果目标单元格之前的批注不需要保留,直接替换成Sheet2 B9的内容,就在你现有代码的最后一行后面加上这段代码:

' 定位到写入k的那个单元格,添加批注
With ws1.Cells(lastRow, 3)
    ' 先清除已有的批注(如果存在)
    If Not .Comment Is Nothing Then .Comment.Delete
    ' 添加新批注,内容是Sheet2 B9的值
    .AddComment Text:=com
    ' 可选:设置批注默认显示,不想默认显示就把这行删掉
    .Comment.Visible = True
End With

场景2:追加内容到原有批注(保留历史记录)

如果希望保留之前的批注,只是把Sheet2 B9的内容追加进去,用这段代码:

With ws1.Cells(lastRow, 3)
    If .Comment Is Nothing Then
        ' 单元格没有批注,直接新建
        .AddComment Text:=com
    Else
        ' 已有批注,追加新内容(用换行分隔开)
        .Comment.Text Text:=.Comment.Text & vbNewLine & com
    End If
    .Comment.Visible = True
End With

修正后的完整代码

另外注意你原代码里的变量声明有点小问题:Dim ws1, ws2 As Worksheet其实只有ws2被声明为Worksheet类型,ws1是Variant类型,最好修正一下类型声明,避免潜在的错误。完整代码如下:

Dim ws1 As Worksheet, ws2 As Worksheet
Set ws1 = ThisWorkbook.Sheets("Sheet1")
Set ws2 = ThisWorkbook.Sheets("Sheet2")
Set rngk = ws2.Range("B5")
com = ws2.Range("B9")
k = Application.WorksheetFunction.VLookup(rngk, ws2.Range("D5:E6").Value, 2, False)
lastRow = ws1.Range("A" & Rows.Count).End(xlUp).Row + 1
ws1.Cells(lastRow, 3) = k

' 这里替换成上面的场景1或场景2的代码段
With ws1.Cells(lastRow, 3)
    If Not .Comment Is Nothing Then .Comment.Delete
    .AddComment Text:=com
    .Comment.Visible = True
End With

这样就能完美实现你要的功能啦~

内容的提问来源于stack exchange,提问作者sinaps1

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 07:23:48