Ms access Application.Eval()不使用表达式

Ms access Application.Eval()不使用表达式,ms-access,vba,Ms Access,Vba,这行代码不会计算: If(StrComp(Left("Campaign", 5), "IMS :") = 0 If(StrComp(左)(“活动”,5),“IMS:”)=0 我是这样使用它的: strHolder=“如果(StrComp(左)(“活动”,5),“IMS:”)=0” myVar=Application.Eval(strHolder) 这是我收到的错误: 运行时错误“2425”: 您输入的表达式具有Microsoft Access找不到的函数名。 我猜Application.

这行代码不会计算:

If(StrComp(Left("Campaign", 5), "IMS :") = 0
If(StrComp(左)(“活动”,5),“IMS:”)=0
我是这样使用它的:

strHolder=“如果(StrComp(左)(“活动”,5),“IMS:”)=0”
myVar=Application.Eval(strHolder)
这是我收到的错误:

运行时错误“2425”: 您输入的表达式具有Microsoft Access找不到的函数名。 我猜
Application.Eval
既不能读取
If
StrComp
,也不能读取
Left

我不知道在这里该做什么,也找不到关于
Eval
方法的深入信息

这行代码不会计算:

If(StrComp(Left("Campaign", 5), "IMS :") = 0
由于括号不平衡和
如果
没有
那么
它也不会编译

这一行也应该有编译错误

strHolder=“如果(StrComp(左)(“活动”,5),“IMS:”)=0”
如果您需要类似于此即时窗口示例的内容

StrComp(左(“活动”,5),“IMS:”)=0 假的
…然后将提交给
Eval()
的字符串中的
字符加倍

strHolder=“StrComp(左)(“活动”,5),“IMS:”)=0
?斯特霍尔德
StrComp(左(“活动”,5),“IMS:”)=0
myVar=Application.Eval(strHolder)
?myVar
0
?CBool(myVar)
假的

感谢您的回复。因此..我已经玩了一段时间了。您对一些语法错误的看法是正确的,但不是全部。1.双引号不起作用-不确定原因,但最终我需要单引号。2.剥离if语句并计算为bool变量是成功的关键(与您在这里所做的差不多)。是否有语法可以从字符串正确计算整个IF语句?不确定。是否有一个完整的
IF
语句的示例,您希望
Eval()
对其进行计算?
IF(StrComp(左(“活动”),5,“IMS:)然后返回someValue
不确定如何对其进行语法分析。我不相信这样做是可能的。
Eval()
无法处理您想要输入的表达式类型——就像一个代码块作为一行一样——Access抱怨说,我尝试过类似的尝试,但它找不到“If”的名称。也许您可以使用
IIf()
获得您想要的:
IIf(Eval(“表达式”),“case when True”,“when when when False”)
…但是有一个
Eval()可以处理的“表达式”。