Как я могу получить ячейку, из которой вызывается моя функция 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
- это просто соглашение.