Excel 使用数字和文本搜索时出现VLookup错误
我是VBA新手,正在尝试重新编写一个已经存在的程序,目的是优化它并添加新功能。该程序接受扫描仪输入(尽管我现在只是手动输入数字),然后记录并分类取出的物品类型。然后将其放入日志中,以供以后参考。以下是接受扫描输入的第一个用户表单: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
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一样。