无法获取WorksheetFunction类的Vlookup属性(指不同的工作簿)

我想在VBA代码中使用VLookup从不同的工作簿(Excel 2010 VBA)查找值。 我在下面的代码的最后一行得到上面的错误:

Sub GetFundValues(Source As String, Target As String, wb As Workbook) Dim nIdx As Integer Dim SourceSheet As Worksheet Dim SourceFile As Workbook Dim s2 As String Dim s3 As String Dim rng As Range s2 = wb.Sheets(Target).Range("C2").Value Set SourceFile = Application.Workbooks.Open("D:\Mydocs\Finance\inv.xls") Set SourceSheet = SourceFile.Worksheets(Source) s3 = SourceSheet.Range("A3").Value Set rng = SourceSheet.Range("A3:A30") nIdx = 3 With wb.Sheets(Target) While wb.Sheets(Target).Range("H" & nIdx).Value <> "" s2 = wb.Sheets(Target).Range("H" & nIdx).Value wb.Sheets(Target).Range("B" & nIdx).Value = Application.WorksheetFunction.VLookup(s2, rng, 3, False) 

s2,s3和rngvariables的值设置正确(它们出于debugging的目的),而Vlookup(列#3)中的值列包含有效值。

我想不出在VLookup的其他问题可能会造成这种情况。 有任何想法吗??

刚刚看到这个:

 Set rng = SourceSheet.Range("A3:A30") 

您正在查看的范围只有1列宽。 当您试图从第三列返回数据时,您的范围至less需要3列:

 Set rng = SourceSheet.Range("A3:C30")