Как назначить расчет функции - PullRequest
0 голосов
/ 06 июня 2019

Я пытаюсь создать UDF, чтобы минимизировать строки данных в расчете.Вместо того, чтобы включать указанный расчет конкретных ссылок на ячейки, я хочу создать переменную с именем Rent_Rate и установить ее равной Base_year_rent * ((1 + Rent_escalator) ^ Compound_period), чтобы формула в электронной таблице гласила: "= Rent_Rate * Units (статическая ссылка на ячейку) "

Я пытался определить переменные и установить каждую переменную в ячейку ссылки, на которую я хочу (на отдельном листе) ссылаться.

Public Function Rent_Rate(Base_year_rent As Long, Rent_escalator As Long, Compound_period As Long, Rent_Rate As Long) As Long

    Base_year_rent = SH_Assumptions.Cells("C11")
    Rent_escalator = SH_Assumptions.Cells("C12")
    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

Я ожидаючто вывод будет определенным значением, равным значениям, введенным в ссылочные ячейки.

1 Ответ

1 голос
/ 06 июня 2019

Сначала - функция в 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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...