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
相关产品推荐
相关产品推荐

