Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 使用数字和文本搜索时出现VLookup错误_Excel_Excel 2016 - Fatal编程技术网

Excel 使用数字和文本搜索时出现VLookup错误

Excel 使用数字和文本搜索时出现VLookup错误,excel,excel-2016,Excel,Excel 2016,我是VBA新手,正在尝试重新编写一个已经存在的程序,目的是优化它并添加新功能。该程序接受扫描仪输入(尽管我现在只是手动输入数字),然后记录并分类取出的物品类型。然后将其放入日志中,以供以后参考。以下是接受扫描输入的第一个用户表单: Private Sub TextBox1_Change() Dim barcode As Long, emptyRow As Long, testHold As Long Set TempHold = Worksheets("TempHold") If Appli

我是VBA新手,正在尝试重新编写一个已经存在的程序,目的是优化它并添加新功能。该程序接受扫描仪输入(尽管我现在只是手动输入数字),然后记录并分类取出的物品类型。然后将其放入日志中,以供以后参考。以下是接受扫描输入的第一个用户表单:

Private Sub TextBox1_Change()

Dim barcode As Long, emptyRow As Long, testHold As Long
Set TempHold = Worksheets("TempHold")

If Application.WorksheetFunction.CountIf(TempHold.Range("D2:D25"), TextBox1.Value) = 1 Then
If Application.WorksheetFunction.CountIf(Range("B:B"), TextBox1.Value) = 0 Then

CartTypeMenu.Show

barcode = TextBox1.Value
emptyRow = WorksheetFunction.CountA(Range("A:A")) + 1

Cells(emptyRow, 1).Value = Application.WorksheetFunction.VLookup(barcode, TempHold.Range("D2:E25"), 2, True)
Cells(emptyRow, 2).Value = barcode
Cells(emptyRow, 3).Value = Format(Now(), "mm/dd/yyyy hh:nn")
Cells(emptyRow, 4).Value = CartTypeMenu.ComboBox1.Value

TextBox1.Value = ""

Else

    testHold = TextBox1.Value
    Call boxTest(testHold)

End If

End If

End Sub
我在一个单独的表(TempHold)中有两个表,其中扫描的输入对应一个数字,数字对应一个名称。最终日志中的行基本上是扫描输入的编号(因为它们用编号标记)、扫描输入、时间(正常工作)、类型,然后是名称

我遇到的问题是,当我在VLookup中搜索要放入日志行中下一个单元格的名称时;从数字中获取名称。仅当名称在日志中处于活动状态时,它才会查找该名称(任务完成后将清除该名称)。我尝试过将数字改为字符串,反之亦然,但我无法让它工作。以下是有问题的模块:

Sub boxTest(testHold As Long)

Dim offsetValue As Long, myValue As Variant

Set ws = Worksheets("Log")
Set sheetLookup = Worksheets("TempHold")

offsetValue = Application.Match(testHold, ws.Range("B2:B8"), 0)

myValue = InputBox("Enter your number")

ws.Range("E" & offsetValue).Value = Application.WorksheetFunction.VLookup(myValue, sheetLookup.Range("A2:B9"), 1, True)

End Sub

VLookup不断给出错误消息,表示无法在此模块中找到工作表函数

A2:A9是否按升序排序?在vlookup中必须是真的。我在那一栏有名字。我将其设置为False,但仍然得到相同的错误(名称为number数据类型);我只是想知道A2:A9是否按升序排序,因为它必须按升序排序才能使用True。我很抱歉。我不知道这些信息是否重要。谢谢你的回复。我会记住这一点。是否希望
“E”和offsetValue
在与testHold的匹配上方1行?Match正在返回B2:B8中的位置,但您使用它就像使用B1:B8一样。