Как узнать, в какой строке выполняется функция? Просто пример:
Function getRowNumber () as Integer
getRowNumber = ???
End Function
Мне это нужно, потому что я написал функцию, которая должна возвращать значения из одной и той же строки (formular получает свой собственный столбец, а затем вычисляет более 300 различных значений для этих 300+ строк). Или есть другой способ адресации значений в строке?
Но мне нужны данные для Row, которых у меня нет. Решение ниже работало отлично.
В этом случае вы можете использовать свойство Application.Caller
. Что-то вроде следующего может помочь вам.
Function Tester() As Long
Dim o As Object
Set o = Application.Caller
Tester = o.Row
End Function
Возможно, более структурированный подход состоял бы в том, чтобы взять Range
в качестве параметра вашей функции, а затем использовать строку этого входного параметра.
Function Tester(rng as Range) as Long
Dim nRow as long
nRow = rng.Row
'Do other stuff
End function
@BigBen Я отредактировал свой пост для Long
. Мой вывод из его поста заключался в том, что это было частью более крупного вызова функции, и на самом деле он не писал UDF
, чтобы получить текущую строку. Я могу ошибаться, но я так интерпретировал это.
Большое спасибо. Именно то, что я искал!
Вам не нужно писать функцию самостоятельно, так как
=ROW()
получит то, что вам нужно.