2014-01-29 4 views
0

У меня есть пользовательская функция, которая вызывает внешний плагин в качестве обертки и возвращает обработанный результат.Excel VBA UDF Комментарий «изнутри»

Он работает по большей части, но когда ошибка из внешней библиотеки возвращается иногда, она отражает как #ERROR! BLAH BLAH BLAH и т. Д.

По эстетическим соображениям пользователей я пытаюсь выяснить способ добавления комментария в ячейку, из которой вызывается функция, и просто вернуть символ «-» или некоторый ориентировочный символ.

Я не могу найти способ найти ссылку на вызывающую ячейку.

Я надеялся на что-то вдоль линий:

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

Кто-нибудь имел возможность сделать это?

Спасибо!

ответ

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 
+0

Brilliant и спасибо! – Kelvin

Смежные вопросы