Vlookup的VBA代码

时间:2015-05-12 13:43:27

标签: vba excel-vba excel

当我在vlookup VBA代码中引用特定单元格时,我可以获取代码以返回正确的答案。

Application.VLookup(Sheets("Setup").Cells(2, 1),
Sheets("Download").Range("A:G"), 7, 0)

但是,如果我用变量(VLDate)替换代码,那么我会收到错误

Application.VLookup(VLDate, Sheets("Download").Range("A:G"), 7, 0)

我试图将Dim VLDate设为字符串,但这也不起作用。

有什么建议吗?

2 个答案:

答案 0 :(得分:0)

在您的示例中,Sheets("Setup").Cells(2,1)不是字符串。

Cells返回一个范围。

Dim VLDate As Range
Set VLDate = Sheet("Setup").Cells(2,1)

如果您的第一个示例有效,使用上面的代码来设置VLDate的值应该会使您的第二个示例也正常工作。

修改 可能会误解你的问题,所以虽然上述情况属实,但可能无济于事!

您能否为VLDate提供示例值,还有单元格格式类型以及其查找范围内的示例值?

答案 1 :(得分:0)

我想我知道问题所在。 vlookup的第一个输入必须与您正在寻找的数据类型相同。例如,如果在您搜索的单元格中只有数字,那么尝试将VLDate标注为数字,如果您尝试将其调整为字符串,则无法找到匹配项,并且会给出类型不匹配错误。

您可以将VLDate变为variant,这更容易,但如果您正在寻找数字,请不要使用引号。

为了调试目的,尝试添加行

MsgBox(CStr(Application.VLookup(Sheets("Setup").Cells(2, 1), Sheets("Download").Range("A:G"), 7, 0))

如果你使用Error 2042的msgbox,那么它就无法找到匹配项,因此你应该使用错误的数据类型。

你使用字符串的唯一情况是目标单元格包含类似=" 21"在他们的公式中,因为那时它是一个字符串。

希望有所帮助