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

Vba VLookup在单元中工作,但在宏中不工作,vba,excel,Vba,Excel,我遇到了一个问题,将VLookup函数从一个单元格移动到一个宏返回N/a 现在,我有一个表正在引用第二个未格式化的表来构建格式化列表。格式化列表使用一系列VLOOKUP命令进行填充,但这需要手动输入新行和“子部分”名称 我正在编写一个宏,它只需读取整个源表,并通过单击填充新的格式化表 不幸的是,当VLOOKUP从单元格移到宏时,我似乎无法让它工作 Sub PopulateSubs() On Error GoTo MyErrorHandler: Dim SubAssy, SubPart As

我遇到了一个问题,将VLookup函数从一个单元格移动到一个宏返回N/a

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

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

不幸的是,当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之外的任何内容

我在这个网站上看过类似的解决方案,并使用子部分作为“子部分”和“子部分”运行宏,但这两个术语似乎都没有帮助

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


谢谢

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

Application.Worksheetfunction.VLookup
这适用于大多数excel公式。vba中嵌入了一些函数,如min/max/now,不需要通过工作表函数成员进行特定调用。

这很好
…Application.WorksheetFunction.VLookup(子部分,Application.Range(“Source\u Table”),6,False)

哪里是
Source\u Table
的尺寸和设置??如何定义
Source\u Table
?#N/A错误表示在源表的第一列中找不到该值。还要检查子部分的数据类型是否与Source_表第一列中的数据类型相同,即文本与数字。我的问题似乎源于不知道需要在宏中定义表;我想既然在手机里这样叫他们。为了澄清,Source_表是我的工作簿中的一个现有表,如果我在cell工作,我可以使用VLOOKUP进行引用。你好,Nick,谢谢你的回复。我已将WorkSheetFunction添加到表达式中,但现在运行宏时出现1004错误。我已将整个代码粘贴到OP以帮助识别问题。我不确定是否遵循,但现在我只看到源表声明,但它不再用于您的代码中?我现在已正确更新OP以显示源表声明。我想我的困惑源于这样一个事实,COUNTIF函数可以直接引用我正在使用的表,但是出于某种原因,VLOOKUP函数需要这个额外的解决方法,我并不完全理解。当前宏返回错误1004对话框。这是因为VLookup需要一个范围,而Source_Table不是范围类型变量。尝试ActiveCell=Application.WorksheetFunction.VLookup(子部分,Source_Table.range,2,0)谢谢,我以为我已经尝试了range()函数的每一种形式,但我一定错过了那一种。它起作用了!