我有一个我认为很简单的问题,但我必须缺少一些东西。
这行VBA有效:
If Me.To = 340 And DLookup("[LocID]", "[qryMyLocation]") = "C25" Then
但是,我需要针对2个LocID进行测试,但这不起作用:
If Me.To = 340 And DLookup("[LocID]", "[qryMyLocation]") = "C25" Or "C20" Then
我想念的是-以上可能吗?
尝试第二行代码时收到错误:运行时错误13类型不匹配
答案 0 :(得分:3)
这是因为您需要再次编写比较,VBA无法将“ C20”理解为有效的布尔表达式。
If Me.To = 340 And ((DLookup("[LocID]", "[qryMyLocation]") = "C25" Or DLookup("[LocID]", "[qryMyLocation]") = "C20")) Then
要获得更快的结果,可以将DLookup存储到变量中。
Dim LocID as Variant 'Put the right type here, I think it should be String
LocID = DLookup("[LocID]", "[qryMyLocation]")
If Me.To = 340 And (LocID = "C25" Or LocID = "C20") Then
编辑:由于运算符优先级,我在括号中添加了与接受的答案相同的括号。省略括号会导致
If (Me.To = 340 And LocID = "C25") Or LocID = "C20" Then
答案 1 :(得分:1)
你很近。试试这个:
If Me.To = 340 And (DLookup("[LocID]", "[qryMyLocation]") = "C25" Or DLookup("[LocID]", "[qryMyLocation]") = "C20") Then
请注意,我也添加了一些括号。
答案 2 :(得分:1)
查找仅返回一个结果,但是您可以在条件中添加所需的结果并计算返回的结果。
If Me.To = 340 And DCount("[LocID]", "[qryMyLocation]", "[LocID] = 'C25' Or [LocID] = 'C20'") > 0 Then