首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Excel VBA Vlookup -无法获取Vlookup属性

Excel VBA Vlookup -无法获取Vlookup属性
EN

Stack Overflow用户
提问于 2013-08-28 00:48:07
回答 1查看 30.3K关注 0票数 4

我有以下脚本,并且收到VLOOKUP错误:

代码语言:javascript
复制
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

不幸的是,我得到的错误是:

代码语言:javascript
复制
"Unable to get the VLookup property of the WorksheetFunction class"

这很奇怪,因为所有的变量和范围在手表模式下看起来都很好。查找也是按字母顺序的.知道是怎么回事吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-08-28 01:05:23

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

代码语言:javascript
复制
Run-time error '1004':

Unable to get the VLookup property of the WorksheetFunction class

等同于从=vlookup("A",A1:B3,2,false)获取#N/A

在行上设置断点

代码语言:javascript
复制
test(i) = Application.WorksheetFunction.VLookup(Data(i, 4), LookupRange, 3, 0)

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

顺便说一下,你的代码无论如何都不会运行,因为Test是一个空的变量,而不是数组。你需要像这样的一行

代码语言:javascript
复制
ReDim Test(LBound(Data, 1) To UBound(Data, 1))

在for循环使其工作之前。

阅读错误处理here。为了从VBA中正确地处理VLOOKUP,您将需要它。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18471266

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档