编辑:将我的代码更改为使用布尔逻辑而不是连接但我仍然遇到相同的错误。
我正在尝试在 vba 中使用 application.xlookup,并通过在此代码中连接公式来添加额外的条件。
Sub employeelookup()
SalesForm.BHSDEMPLOYEETD.Value = Application.XLookup(1, (Worksheets("TELEDATA").Range("E:E") = SalesForm.BHSDMAINNUMBERLF.Value) * (Worksheets("TELEDATA").Range("AI2:AI5") = SalesForm.BHSDRECORDTD.Value), Worksheets("TELEDATA").Range("F:F"))
End Sub
我曾尝试更改括号并弄乱顺序,但出现语法错误。上面的代码理论上应该可以工作,但我无法弄清楚类型不匹配错误的来源。
你可以使用
Evaluate
:
Sub employeelookup()
'Whether v1 and/or v2 are quoted depends on if numeric or text
' here <v1> is numeric and <v2> is not
Const FRM As String = "XLOOKUP(<v1>&<v2>,E:E&AI:AI,H:H)"
Dim res, f
'replace the placeholders in the formula with values from your form
f = Replace(FRM, "<v1>", val(SalesForm.BHSDMAINNUMBERLF.value))
f = Replace(f, "<v2>", SalesForm.BHSDRECORDTD.value)
'evaluate in context of sheet TELEDATA
res = Worksheets("TELEDATA").Evaluate(f)
If IsError(res) Then 'if got an error then no match was made
Debug.Print "No match"
Else
Debug.Print res
End If
End Sub