Ячейка Excel, из которой вызывается функция [duplicate]

38

Как я могу получить ячейку, из которой вызывается моя функция VBA?

Другими словами, что эквивалентно VBA для INDIRECT (ROW(), COLUMN())?

Я не ищу ActiveCell.

То, что я хочу сделать, это простая функция ThisRow_Col(rColumn As String) вернуть столбец X строки, из которой он вызвал. Скажем в B2, я вызываю = ThisRow_Col ( "A" ), он должен вернуть значение A2. Это должно работать независимо от того, какая ячейка активна.

EDIT: Спасибо Чарльзу за ответ: Application.Caller. Следующий код получает столбец X текущей строки, независимо от того, где находится выбор:

Function ThisRow_Col(rColumn As Range)
    ' Return INDIRECT(rcolumn & ROW())

    ThisRow_Col = Application.Caller.Worksheet.Cells(Application.Caller.Row, rColumn.Column).Value

End Function

Обратите внимание, что передача столбца в виде диапазона (ThisRow_Col(A1)) лучше, чем передача его в виде строки, поскольку Excel может автоматически обновлять формулы, если вы перемещаете или вставляете столбцы. Конечно, строка 1 A1 - это просто соглашение.

Теги:
excel
cell

1 ответ

58
Лучший ответ

Application.Caller возвращает объект диапазона, из которого вызывается UDF.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню