Excel 2010 Пользовательская функция, которая возвращает результат, НО также устанавливает комментарии к ячейкам. Сбой Excel, когда пользователь нажимает Fx

У нас есть определяемая пользователем функция VBA. Эта функция возвращает результат, но также устанавливает комментарий к ячейке. Работает, получаем результат и комментарий ставится.

Мы включили справку пользователя по этой функции. Однако, если пользователь щелкает Fx, чтобы получить справку, Excel аварийно завершает работу. Если закомментировать настройку комментария к ячейке, справка работает. Добавление "On Error" не решило проблему.

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

Есть ли в Excel флаг, который мы можем использовать, чтобы определить, что Excel запускает функцию на экране справки «Fx», и пропустить установку комментариев?

Любые другие идеи приветствуются.

Код для установки комментария, который вызывается нашей UDF:

Sub SetRangeComment(rng As Range, comment As String, intHeight As Long, intWidth As Long)

    On Error GoTo IgnoreError

    rng.ClearComments
    rng.AddComment comment
    If intHeight > 0 Then
        rng.comment.Shape.height = 13 * intHeight
    End If
    If intWidth > 0 Then
'    rng.comment.Shape.width = 6 * intWidth
    End If
    Exit Sub

IgnoreError:
    Exit Sub
End Sub

person APLMom    schedule 30.06.2015    source источник
comment
Вы можете использовать application.caller Но что вы имеете в виду под вылетами? Это ошибка? Что, если вы пошагово пройдете код, где произойдет сбой?   -  person Raystafarian    schedule 30.06.2015
comment
TypeName(Application.Caller) — это Range как в случае вызова функции из ячейки, так и при нажатии кнопки Fx.   -  person APLMom    schedule 01.07.2015
comment
Он не работает в режиме, в котором Excel выводит окно сообщения с вопросом, хочу ли я отлаживать код Excel с помощью Visual Studio. он терпит неудачу на rng.ClearComments. Хотя это отлично работает при вызове из ячейки, я уверен, что проблема в форме Fx, которая присутствует, не имеет комментариев, которые можно установить. Мне нужен способ определить, что форма Fx открыта. Тогда я могу пропустить настройку комментария. Любые идеи о том, как обнаружить это?   -  person APLMom    schedule 01.07.2015


Ответы (1)


Что-то типа:

Public Function MyUdf()
    MsgBox TypeName(Application.Caller)
    MyUdf = "X"
End Function

Но создавать Комментарии с UDF не рекомендуется.

person Gary's Student    schedule 30.06.2015