VLookup在单元格中工作,但不在宏

时间:2017-01-11 21:46:26

标签: excel vba excel-vba

我遇到的问题是将VLookup功能从Cell移动到宏返回#N / A.

现在,我有一个表引用第二个未格式化的表来构建格式化列表。格式化列表使用一系列VLOOKUP命令来填充,但这需要手动输入一个新行和' SubPart'名。

我正在编写一个宏,只需单击即可读取整个源表并填充新的格式化表。

不幸的是,当它从单元格转移到宏时,我似乎无法使VLOOKUP工作。

Sub PopulateSubs()


On Error GoTo MyErrorHandler:
Dim SubAssy, SubPart As String
Dim BomCount, i As Integer
Dim BlankRow As Long
Dim Source_Table As ListObject

Set Source_Table = Worksheets("BoMs").ListObjects("Table_Query_From_Syspro")


SubAssy = InputBox("Enter the Subassembly:")

If Len(SubAssy) > 0 Then
  BomCount = Application.CountIf(Range("Table_Query_from_Syspro[ParentPart]"), SubAssy)

 For i = 1 To BomCount

    BlankRow = Range("A10000").End(xlUp).Row + 1
    Cells(BlankRow, 1).Select
    SubPart = SubAssy & i
    ActiveCell = i
    ActiveCell.Offset(0, 1).Select
    ActiveCell = Application.WorksheetFunction.VLookup(SubPart, Source_Table, 2, 0)
    ActiveCell.Offset(0, 1).Select
    ActiveCell = Application.WorksheetFunction.VLookup(SubPart, Source_Table, 3, 0)

Next i

Else

    MsgBox "You entered an invalid value"

End If


MyErrorHandler:
If Err.Number = 1004 Then
MsgBox "Sub assembly Not Present in the table."
End If

End Sub       

手册表中的VLOOKUP正常工作,但我无法在此应用程序中返回#N / A以外的任何内容。

我在这个网站上看过类似的解决方案,并使用SubPart运行宏作为" SubPart"以及"" SubPart""但这两个词都没有帮助。

源表格被格式化为所有单元格的常规,我不确定这是否会导致类型与字符串条目不匹配。

谢谢!

2 个答案:

答案 0 :(得分:0)

你调用vlookup的方式不起作用是因为它是Worksheetfunction的成员,试试;

Application.Worksheetfunction.VLookup

这适用于大多数excel公式。有一些函数嵌入在vba中,如min / max / now,并且不必特别通过Worksheetfunction成员调用。

答案 1 :(得分:0)

这很好用 ... Application.WorksheetFunction.VLookup(SubPart,Application.Range(“Source_Table”),6,False)