我是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不断给出该模块中找不到WorksheetFunction的错误。