Передать аргумент функции как формулу - PullRequest
0 голосов
/ 01 мая 2019

Вот код моего VBA-скрипта:

Function custom_if_formula(condition)
    MsgBox(condition)    
End Function

Я вставляю формулу в любую ячейку:

=custom_if_formula(B1="something")

Результат в MsgBox: TRUE или FALSE. Возможно ли получить в MsgBox в результате B1="something" вместо?

Псевдокод того, чего я хотел бы достичь:

Function custom_if_formula(condition)
    condition = condition.formula 'any method which take a literal string
    MsgBox(condition)    
End Function

P.S. Моя цель - реализовать собственную функцию IFS, которая ведет себя идентично, как в Excel 2016. Мне просто любопытно, если это возможно. Вот почему я не хочу передавать строку в качестве аргумента.

Ответы [ 2 ]

0 голосов
/ 02 мая 2019

Хорошо, я нашел способ, как это сделать:

Function custom_if_formula(condition)
    cell_formula = Range(Application.Caller.Address).Formula 'I get an adress of a cell which call an UDF, and then take all string it contains
    arg = Mid(cell_formula, 12, 100)
    MsgBox(arg)
End Function
0 голосов
/ 01 мая 2019

Я думаю, что вы ищете:

Function custom_if_formula(condition)
    If condition.Value = "something" Then MsgBox "something"
End Function

Где B1 берется в качестве аргумента: =custom_if_formula(B1). Помещение в любую ячейку (когда B1 содержит строку "что-то") вернет:

img1

Вы должны действительно уточнить, каково ваше намерение здесь, хотя. UDF должен возвращать значение в свою ячейку. Прямо сейчас, это просто скажет 0 в ячейке UDF. Кроме того, поиск «чего-то» можно интерпретировать как поиск «1015 * чего-либо» , а использование такого рода словоблудия приводит к суровому испытанию «кто на первом, то на втором» ...

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