VBA 中的 XLookup 不返回值

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

我创建了一个用户窗体,仅用于数据显示。我将用户表单中的数据与同一 Excel 工作簿中标有“MARKETING_FORM”的选项卡进行比较。 最终,如果两者不匹配,用户表单结果将显示为红色。目前我只想在消息框中弹出结果。

TBITEMNUMBER.Value——这是我的用户表单上的文本框,其中包含零件号。 (11100345) ("MARKETING_FORM").Range("E:E") -- 此范围在单独的选项卡上包含与上面相同的部件号 (11100345) ("MARKETING_FORM").Range("H:H") -- 这将是零件编号颜色名称 (SILVER)

Sub CommandButton3_Click()

Dim Lookup_Value As String
Dim LookupA As Range
Dim ReturnA As Range
Dim If_Not_Found As String
Dim Result As Variant

Lookup_Value = TBITEMNUMBER.Value
Set LookupA = Workbook.Sheets("MARKETING_FORM").Range("E:E")
Set ReturnA = Workbook.Sheets("MARKETING_FORM").Range("H:H")
If_Not_Found = "Item Number Not Found"

Result = Application.WorksheetFunction.Xlookup(Lookup_Value, LookupA, ReturnA, If_Not_Found)

MsgBox Result`

End Sub

每次弹出消息框时,都会显示“未找到商品编号”。 在此输入图片描述

我正在使用 Microsoft 365,并且我知道项目编号位于选项卡上。

我尝试了在互联网上找到的所有不同的组合,虽然数量不多,但没有一个有效。我尝试使用数组,我已经给出了答案。(查看单元格 E3 并回忆 H3) 结果始终是“找不到商品编号”。

最终,如果用户窗体有 11100345 = 黑色,“MARKETING_FORM”有 11100345 = 银色 我希望“黑色”这个词是红色且粗体的,所以我知道这是不准确的。 但显然,我无法更新字体颜色,直到它在消息框中返回正确的颜色。

我从 2007 年起就没有接触过 VBA,所以我有点生疏了。非常感谢任何帮助。

excel vba range xlookup
1个回答
0
投票

如果工作表上的项目编号存储为数值,则使用字符串搜索值将无法找到匹配项,因此您可以提供数字搜索值:

Sub CommandButton3_Click()
    Const If_Not_Found As String = "Item Number Not Found"
    Dim Result As Variant
    
    With ThisWorkbook.Worksheets("MARKETING_FORM")
        Result = Application.WorksheetFunction.XLookup( _
                                CLng(TBITEMNUMBER.Value), _
                                .Range("E:E"), _
                                .Range("H:H"), _
                                If_Not_Found)
    End With
    
    MsgBox Result

End Sub
© www.soinside.com 2019 - 2024. All rights reserved.