VBA使用字符串参数的Evaluate函数

4

我有这个函数可以工作(它返回文本 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"")")

那么呢?

1
这个Evaluate函数让我苦恼不已...如果我现在想向函数发送一个值(而不是字符串),该怎么办?Found = Application.Evaluate("=IF(ID=1,ROW(ID),""x"")") 上面的代码可以正常工作!但是如果我想把它变成一个变量,比如:Found = Application.Evaluate("=IF(ID=MyValue,ROW(ID),""x"")") 那该怎么办呢? - Mats Olsson
3个回答

6

双击 " 将其作为字面量包含:

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

谢谢!它有效了!我也在尝试做同样的事情,但是在搜索字符串内部,但是失败了。感谢您的帮助和快速回答! - Mats Olsson

0

使用stdVBA(一个由我主要维护的开源库),您可以使用stdLambda来实现以下操作:

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

-1

你能试试吗?

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

也会尝试这个,等一下! - Mats Olsson
不行!在这个上面会收到2029错误。但是Alex的建议起作用了。也感谢你尝试帮忙! - Mats Olsson

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接