我正在尝试vlookup
从一张纸到另一张纸的一些数据。
每当我使用VBA尝试Vlookup
时,结果就是Application.WorksheetFunction.vlookup
代替
Application.WorksheetFunction.VLookup
这仅在此项目中发生。即使我尝试创建一个新模块,也无济于事。 我尝试了一个新项目,在那儿工作得很好。
ThisWorkbook.Sheets("Sheet5").Cells(2, 2) = Application.WorksheetFunction _
.vlookup(ThisWorkbook.Sheets("Sheet5").Cells(2, 1), _
ThisWorkbook.Sheets("Constraints Data").Range(Cells(1, 1), Cells(3, 2)), 3, False)
编辑:此代码段在列超出范围时起作用。但是,该错误仍然存在于以下代码段中
Set wb = ThisWorkbook.Sheets("DAH DATA")
Set sh = ThisWorkbook.Sheets("Constraints Data")
lastrow2 = wb.Cells(Rows.count, 1).End(xlUp).row
lastcol2 = wb.Cells(2, Columns.count).End(xlToLeft).Column
wb.Activate
Set rng1 = Range(Cells(1, 1), Cells(lastrow2, lastcol2))
sh.Cells(132, 22).Value = Application.WorksheetFunction.vlookup _
("7/30/2019", rng1, 2, 0)
因此我得到
错误1004:无法获取工作表功能的VLookup属性 课。
答案 0 :(得分:2)
它的行为方式表明您已经声明了一个名称为vlookup
的变量,现在只要您键入VLookup
,它就会尝试更正。
我建议您使用Option Explicit
(只需在代码文件的顶部键入)。
答案 1 :(得分:2)
您正在尝试获取范围的第3列,但您的范围只有2列。
您必须选择:
3, False)
更改为2, False)
wsB.Cells(3, 2))
更改为wsB.Cells(3, 3))
我尝试简化代码:
Option Explicit
Sub test()
Dim wsA As Worksheet, wsB As Worksheet
With ThisWorkbook
Set wsA = .Sheets("Sheet5")
Set wsB = .Sheets("Constraints Data")
End With
wsA.Cells(2, 2) = Application.WorksheetFunction.VLookup(wsA.Cells(2, 1), wsB.Range(wsB.Cells(1, 1), wsB.Cells(3, 2)), 3, False)
End Sub
答案 2 :(得分:1)
您正在搜索范围ThisWorkbook.Sheets("Constraints Data").Range(Cells(1, 1), Cells(3, 2))
该范围是3行2列。
但是在VLOOKUP的第三个参数中,键入3
以检索第三列中的值。
没有第三列。这会导致错误。