为什么我的 Application.XLookup 在 VBA 中出现“类型不匹配”错误?

问题描述 投票:0回答:1

编辑:将我的代码更改为使用布尔逻辑而不是连接但我仍然遇到相同的错误。

我正在尝试在 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

我曾尝试更改括号并弄乱顺序,但出现语法错误。上面的代码理论上应该可以工作,但我无法弄清楚类型不匹配错误的来源。

excel vba userform xlookup
1个回答
1
投票

你可以使用

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
© www.soinside.com 2019 - 2024. All rights reserved.