Excel VBA UDF评论“从内部”

时间:2014-01-29 16:45:11

标签: excel-vba user-defined-functions vba excel

我有一个用户定义的函数,它将外部插件作为包装器调用并返回操作结果。

它在很大程度上起作用,但是当外部库的错误回来时,它有时反映为#ERROR! BLAH BLAH BLAH等。

出于审美原因,我试图找出一种方法来向调用函数的单元格中添加注释,然后返回“ - ”或某些指示性字符。

我似乎找不到找到调用单元格引用的方法。

我希望有类似的内容:

If VarType(ret) = vbString And InStr("ret", "#ERROR!") > 0 Then
     <insert comment into Caller>
End If

有没有人有机会这样做?

谢谢!

1 个答案:

答案 0 :(得分:2)

使用Application.Caller

Function WrapError(ret As Variant) As Variant
    Dim CatchErr As Boolean

    If VarType(ret) = vbString Then
        If InStr(ret, "#ERROR!") = 1 Then
            CatchErr = True
        End If
    End If

    If CatchErr Then
        WrapError = [#VALUE!]
        Application.Caller.AddComment ret
    Else
        WrapError = ret
        If Not Application.Caller.Comment Is Nothing Then
            Application.Caller.Comment.Delete
        End If
    End If
End Function