我正在尝试从一个工作表到另一个工作表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属性.
发布于 2019-09-18 09:22:11
它的行为方式表明您已经声明了一个名为vlookup的变量,现在它试图在键入VLookup时进行更正。
我建议您使用Option Explicit (只需在代码文件的顶部键入它)。
发布于 2019-09-18 09:26:49
您正在尝试获得范围的第三列,但您的范围只有2列。
你必须选择:
如果您所查看的范围有2列-将2, False)
3, False),则您所查看的范围有3列--将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发布于 2019-09-18 09:26:06
你在范围内搜索ThisWorkbook.Sheets("Constraints Data").Range(Cells(1, 1), Cells(3, 2))
该范围为3行2列。
但是在VLOOKUP中,在第三个参数中,键入3以检索第三列中的值。
而且没有第三列。这会导致错误。
https://stackoverflow.com/questions/57988983
复制相似问题