Как написать UDF, который использует ячейку, в которой он написан в качестве ссылки - PullRequest
2 голосов
/ 15 апреля 2019

Я хочу написать UDF, который возвращает значение RGB цвета фона ячейки, в которой оно написано. Как можно ссылаться на ячейку, в которой написана UDF, без указания ячейки?

Я бы хотел, чтобы моя функция работала так же, как и функция рабочего листа =COLUMN().

Предоставление ActiveCell не работает ... потому что активная ячейка будет вызывать что-то другое при повторном вызоведелается из листа.

Function BackgroundAsRGB(Optional rng As Range)
On Error GoTo Hell
    If rng Is Nothing Then
        Set rng = ActiveCell 'It isn't active cell...
    End If
    BackgroundAsRGB = ColorLongToRGB(rng.Resize(1, 1).Interior.Color)
Hell:
End Function

1 Ответ

4 голосов
/ 15 апреля 2019

Try:

    Function BackgroundAsRGB(Optional rng As Range)
Dim MyTarget As Range

If rng Is Nothing Then
    Set MyTarget = Application.Caller
Else
   Set MyTarget = rng
End If

BackgroundAsRGB = ColorLongToRGB(MyTarget.Resize(1, 1).Interior.Color)

End Function

Application.Caller возвращает объект, который вызывает UDF, поэтому он возвращает диапазон, в котором вы выполняете эту UDF.Дополнительная информация:

Свойство Application.Caller (Excel)

Также проверьте:

Свойство Application.ThisCell (Excel)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...