当我在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
设为字符串,但这也不起作用。
有什么建议吗?
答案 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"在他们的公式中,因为那时它是一个字符串。
希望有所帮助