4

我有以下脚本,但出现 VLOOKUP 错误:

Dim DataRange, LookupRange As Range
Dim Data, Test As Variant

Set DataRange = Sheets("sheet").Range("A1:K12000")
Set LookupRange = sheets("sheet2").Range("A1:C50")
Data = DataRange.Value

For i = LBound(Data, 1) To UBound(Data,1)
  ReDim Preserve Test(1 To 3, 1 To i)
  test(1, i) = Application.WorksheetFunction.VLookup(Data(i, 4), LookupRange, 3, 0)
  'Other stuff works fine
Next i

不幸的是,我收到错误说明:

"Unable to get the VLookup property of the WorksheetFunction class"

这很奇怪,因为所有变量和范围在监视模式下看起来都很好。查找也是按字母顺序排列的......有什么想法吗?

4

1 回答 1

5

这可能意味着很多事情。这可能只是意味着Data(i, 4)在 LookupRange 中找不到您的值。

Run-time error '1004':

Unable to get the VLookup property of the WorksheetFunction class

相当于#N/A=vlookup("A",A1:B3,2,false)

在行上设置断点

test(i) = Application.WorksheetFunction.VLookup(Data(i, 4), LookupRange, 3, 0)

并设置手表和Data(i, 4)手表i。查看中的值是否Data(i, 4)存在于您的查找范围中。查看是否i大于 1,是否正确运行了循环的一些迭代。

作为旁注,您的代码无论如何都不会运行,因为Test它是一个空变体而不是数组。你需要一条线

ReDim Test(LBound(Data, 1) To UBound(Data, 1))

在 for 循环之前让它工作。

在此处阅读错误处理。您需要它才能从 VBA 正确处理 VLOOKUP。

于 2013-08-27T17:05:22.850 回答