VBA将.Vlookup更改为.vlookup

时间:2019-09-18 09:04:58

标签: excel vba

我正在尝试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属性   课。

3 个答案:

答案 0 :(得分:2)

它的行为方式表明您已经声明了一个名称为vlookup的变量,现在只要您键入VLookup,它就会尝试更正。

我建议您使用Option Explicit(只需在代码文件的顶部键入)。

答案 1 :(得分:2)

您正在尝试获取范围的第3列,但您的范围只有2列。

您必须选择:

  1. 如果您查看的范围有2列-将3, False)更改为2, False)
  2. 如果您查看的范围有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

答案 2 :(得分:1)

您正在搜索范围ThisWorkbook.Sheets("Constraints Data").Range(Cells(1, 1), Cells(3, 2))

该范围是3行2列。

但是在VLOOKUP的第三个参数中,键入3以检索第三列中的值。

没有第三列。这会导致错误。