Excel VBA Vlookup打印标签

Excel VBA Vlookup打印标签,excel,vba,Excel,Vba,在过去的几天里,我一直在绕圈子,试图找出使用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

在过去的几天里,我一直在绕圈子,试图找出使用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
我想做的是,使用来自两个不同工作表的信息打印标签。 然而,我不断地犯错误

“1004”无法获取WorksheetFunction类的VLookup属性

我在互联网上到处都找过了,但我找到的样本和答案似乎都没有解决我的问题。

如果
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

此外,我建议使用
选项Explicit
并正确声明所有变量。

谢谢您的回答。但是,我在尝试设置MsgBox时收到一条错误消息。“编译错误:应为:语句结束”,突出显示
rng1。调整大小
任何提示?@barbaz抱歉,我的错误。就在
rng1之前有一个
&
缺失。请调整大小…
。修好了,噢!我懂了。我很抱歉没有注意到这一点。再次感谢你。:)抱歉再次打扰你。如果出现以下情况,代码是否缺少任何结尾?当尝试调试时,我得到一条错误消息:if没有结束。即使在你给我的代码中有一个结尾,你是对的。我把
退出子系统
结束子系统
搞砸了。