У меня есть эта функция VBA:
Public Function testPrec(target As Range) As String
testPrec = target.Precedents.Address(External:=False)
End Function
В ячейке C11 у меня есть эта формула:
=C6+C8
Если я позвоню testPrec
из непосредственного окна, он работает нормально:
?testPrec([c11])
$C$6,$C$8
EDIT: Он также отлично работает, если вызывается из макроса Sub, не относящегося к UDF. Аномалия - это случай UDF.
Если я назову его из рабочего листа как UDF:
=testPrec(C11)
Я просто верну «$ C $ 11».
Кто-нибудь знает, что происходит, или даже лучше, как получить фактические прецеденты в рамках вызова UDF? (Я использую Excel 2007.)