如何修改VLOOKUP自定义函数以提取Excel紫色标记的Comments?
修改VLOOKUP UDF以提取Excel紫色标记的Comments(线程注释)
原代码仅支持提取Excel旧版的红色标记“备注”(对应VBA里的Comment对象),而你需要的紫色标记“批注”是Excel新版的线程注释(对应ThreadedComments集合)。以下是修改后的代码,可同时兼容提取两种注释:
Function VlookupComment(LookVal As Variant, FTable As Range, FColumn As Long, FType As Long) As Variant 'Updateby Extendoffice / Modified to support Threaded Comments Application.Volatile Dim xRet As Variant 'could be an error Dim xCell As Range xRet = Application.Match(LookVal, FTable.Columns(1), FType) If IsError(xRet) Then VlookupComment = "Not Found" Else Set xCell = FTable.Columns(FColumn).Cells(1)(xRet) VlookupComment = xCell.Value With Application.Caller '先清除目标单元格已有的注释/批注 If Not .Comment Is Nothing Then .Comment.Delete If .ThreadedComments.Count > 0 Then .ThreadedComments.DeleteAll '处理旧版红色备注(Comment对象) If Not xCell.Comment Is Nothing Then .AddComment xCell.Comment.Text End If '处理新版紫色线程批注(ThreadedComments集合) If xCell.ThreadedComments.Count > 0 Then .AddCommentThreaded xCell.ThreadedComments(1).Text End If End With End If End Function
关键改动说明:
- 新增了对
ThreadedComments集合的判断,这是Excel新版紫色批注对应的对象 - 提取线程批注时取集合中第一条的文本(
ThreadedComments(1).Text),因为线程批注支持多条回复,这里默认取原始批注内容 - 增加了清除目标单元格已有线程批注的逻辑(
.ThreadedComments.DeleteAll),避免重复添加 - 保留了对旧版
Comment对象的兼容,确保两种注释都能被提取
内容的提问来源于stack exchange,提问作者MarkBEdwards
相关产品推荐
相关产品推荐

