VBA 使用字符串参数计算函数

VBA Evaluate function with string arguments

我可以使用此功能(它 returns 文本 DK001 在 ID 范围内所在的行)

Found = Application.Evaluate("=IF(ID=""DK001"",ROW(ID),""x"")")

我想将搜索条件(例如 DK001)作为字符串提供,例如

Found = Application.Evaluate("=IF(ID=SearchString,ROW(ID),""x"")")

我未能创建接受为搜索条件的字符串。我需要你的帮助!我做错了什么?


这个 Evaluate 函数一直困扰着我....

如果我现在想向函数发送一个值(不是字符串)怎么办?

Found = Application.Evaluate("=IF(ID=1,ROW(ID),""x"")")

以上有效!

但是如果我想让它成为一个像

这样的变量
Found = Application.Evaluate("=IF(ID=MyValue,ROW(ID),""x"")")

然后呢?

" 以将它们包含为文字:

SearchString = "DK001"
Found = Application.Evaluate(""=IF(ID=""" & SearchString & """,ROW(ID),""x"")")

你可以试试吗

Application.Evaluate("=IF(ID="" & searchsrtring & "",ROW(ID),""x"")")

使用 stdVBA(一个主要由我自己维护的开源库),您可以使用 stdLambda 来完成此操作,如下所示:

set lambda = stdLambda.Create("if id.value =  then id.row else ""x""").bindGlobal("id",range("ID"))
'later...
Found = lambda("DK001")