过去几天我一直在圈子里奔波,试图找出使用VBA使用vlookup的最佳方法。
到目前为止,我有此代码:
Private Sub CommandButton21_Click() 'Print Pack
Dim ws As Worksheet, ws2 As Worksheet, ws3 As Worksheet
Dim nbanho As Single, tgrids As Long, banho As Double, rng1 As Range, rng2 As Range
Set ws = Sheets("Grid Bath")
Set ws2 = Sheets("Orders")
Set ws3 = Sheets("CL Labels")
Set rng1 = ws.Range("A1:G1048576")
Set rng2 = ws2.Range("C1:I1048576")
bath = TextBox21.Value
nbath = Application.WorksheetFunction.VLookup(bath, rng1, 7, False)
tgrids = Application.WorksheetFunction.VLookup(bath, rng2, 7, False)
ws3.Range("A1") = TextBox22.Value 'puid
ws3.Range("A2") = Date 'Date
ws3.Range("A3") = "Banho " & nbanho 'Bath Number
ws3.Range("A4") = "Total Grids: " & tgrids
ws3.Range("A5") = "*" & TextBox21.Value & "*" 'ID Bath
ws3.Range("A6") = TextBox21.Value 'ID Carbonation
'ws2.Range("A1:A6").PrintOut
End Sub
我想做的是,使用2个不同工作表中的信息打印标签。 但是,我总是出错
'1004'无法获取WorksheetFunction类的VLookup属性
我在互联网上到处都是,但是我发现的所有示例和答案似乎都无法解决我的问题。
这是我的代码。如果有人可以帮助我,我将不胜感激。
答案 0 :(得分:1)
如果VLOOKUP()
失败(找不到匹配项),则会收到此错误。
因此,您需要捕获此错误,例如……
nbath = ""
On Error Resume Next
nbath = Application.WorksheetFunction.VLookup(bath, rng1, 7, False)
On Error Goto 0
If nbath = "" Then
Msgbox "The value '" & bath & "' could not be found in " & rng1.Resize(ColumnSize:=1).Address(RowAbsolute:=False, ColumnAbsolute:=False, External:=True)
Exit Sub
End If
另外,我建议使用Option Explicit
并正确声明所有变量。