Я хотел создать пользовательскую функцию, которая была бы сокращением для if(somefunction(arg)=something,"sometext",somefunction(arg))
поэтому мне не нужно дублировать somefunction(arg)
каждый раз, когда я делаю это, просто например, как iferror
позволяет нам покончить с if(iserror(somefunction(arg)),"sometext",somefunction(arg)
Например, я хочу иметь возможность вводить iftrue(somefunction(arg),"=A1","message")
и эквивалентно if(sumfunction(arg)=A1,"message",sumfunction(arg))
Я старался:
Function iftrue(Fx, condition, show)
iftrue = Application.WorksheetFunction.if(Fx & condition, show, Fx)
End Function
Но это дает # значение.
Чтобы диагностировать мою проблему, я попробовал несколько более простых функций, чтобы увидеть, где я ошибаюсь. Поэтому я продублировал функции SUM и If.
Эта функция "сумма" работает.
Function testsum(a, b)
test = Application.WorksheetFunction.Sum(a, b)
End Function
Но эта функция "если" не работает.
Function testif(a, b, c)
testif = Application.WorksheetFunction.if(a, b, c)
End Function
Поэтому я думаю, что моя проблема в том, как я вызываю worksheet.function.if
.
Я знаю, что мог бы просто обойти это, используя вместо этого VBA ifs, но это не совсем то, что я хочу делать.