VBA Vlookup打印标签

时间:2018-10-11 09:17:14

标签: 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 = 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属性

我在互联网上到处都是,但是我发现的所有示例和答案似乎都无法解决我的问题。

这是我的代码。如果有人可以帮助我,我将不胜感激。

1 个答案:

答案 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并正确声明所有变量。