我认为这是一个简单的问题,但我必须遗漏一些东西。
这行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类型不匹配
你很亲密试试这个:
If Me.To = 340 And (DLookup("[LocID]", "[qryMyLocation]") = "C25" Or DLookup("[LocID]", "[qryMyLocation]") = "C20") Then
请注意,我也添加了一些括号。
这是因为你需要再次编写比较,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
查找仅返回一个结果,但您可以在条件中添加所需的结果并计算返回的结果。
If Me.To = 340 And DCount("[LocID]", "[qryMyLocation]", "[LocID] = 'C25' Or [LocID] = 'C20'") > 0 Then