将函数参数作为公式传递

时间:2019-05-01 20:14:08

标签: excel vba

这是我的VBA脚本的代码:

Function custom_if_formula(condition)
    MsgBox(condition)    
End Function

我将公式粘贴到任何单元格上

=custom_if_formula(B1="something")

MsgBox中的结果为:TRUEFALSE。可以代替B1="something"进入MsgBox吗?

我想要实现的伪代码:

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

P.S。我的目标是实现自己的IFS函数,其行为类似于Excel2016。我只是想知道它是否可能。这就是为什么我不想将字符串作为参数传递的原因。

2 个答案:

答案 0 :(得分:0)

我认为您正在寻找:

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

B1作为参数:=custom_if_formula(B1)。将其放在任何单元格中(当B1包含字符串“ something”时)将返回:

img1

不过,您应该真正弄清您的意图。 UDF应该向其单元格返回一个值。现在,它只会在UDF的单元格中说0。另外,寻找“某物”可以解释为寻找任何东西,并且使用这种语气导致“谁在第一,第二在谁”的磨难……

答案 1 :(得分:0)

好的,我找到了一种方法:

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