Сначала - функция в Excel должна иметь квадратные скобки, например, =Rent_Rate()
Вы можете обойти это, установив именованный диапазон с нужным именем, которое вызывает вашUDF (например, именованный диапазон с именем RentRate
, который равен =Rent_Rate()
)
Следующая проблема заключается в том, что вы задали аргументы UDF 3, но ничего не передавали им.На самом деле, вы немедленно перезаписываете их - просто Dim
вместо переменных!
Public Function Rent_Rate() AS Long
Dim Base_year_rent As Long, Rent_escalator As Long, Compound_period As Long, Rent_Rate As Long
Base_year_rent = SH_Assumptions.Cells("C11").Value
Rent_escalator = SH_Assumptions.Cells("C12").Value
'What is this abomination supposed to do???
Compound_period = Year(Range(ActiveCell, ActiveCell.End(xlUp)).Select) - Year(SH_Assumptions.Cells("C4"))
Rent_Rate = Base_year_rent * ((1 + Rent_escalator) ^ Compound_period)
End Function
Однако у вас все еще есть большая проблема - почему вы используете ActiveCell
и Select
? Особенно в UDF, вам следует Избегать использования Select
.Если вы пытаетесь использовать ячейку, которая вызывает функцию, найдите Application.Caller