【问题标题】:VBA Using Vlookup to assign Value to ActiveCell, in another referenced workbookVBA 使用 Vlookup 将值分配给 ActiveCell,在另一个引用的工作簿中
【发布时间】:2014-12-05 22:35:00
【问题描述】:

我一直在尝试在 VBA 中使用 vlookup,这很烦人。

ActiveCell.Value = Application.WorksheetFunction.VLookup(Cells(currentrow, 12), currwor.Worksheets("Sheet1").Range("R4C3:R160C10"), 6, False)

是代码

我使用的主要元素是 currwor 已设置为引用另一个工作簿,我希望在其中的范围上使用 vlookup。

但是,它不断提示下标超出范围的错误。

我怀疑currwor是这件事的罪魁祸首 Set currwor = ActiveWorkbook(然后打开执行上述操作的工作簿,并为其分配工作簿名称。) 我不能使用特定的范围,因为我正在尝试对范围内的每个单元格执行 vlookup,并且该范围每次都会更改,并且要在我获得的特定文档上执行 currwor 但名称可能会有所不同(格式但是保持不变。)

有什么建议吗?

编辑:一个错误是它不应该是 sheet1 而是“按产品列出的库存报告”。但是它仍然会引发下标超出范围错误。

【问题讨论】:

    标签: excel vba vlookup


    【解决方案1】:

    通过使用Set currwor = ActiveWorkbook 您将当前活动的工作簿分配给 currwor 但是您之前提到它应该是不同的工作簿?意思是你应该有一行Set currworb = Workbooks("desired workbook name")

    【讨论】:

    • 好的,我有两个工作簿 - 一个是要更新的工作簿,我设置为 Set currwor = ActiveWorkbook Workbooks.Open ("C:\Users\Nilay\Lync Recordings \Quality Control Database.xlsm") 设置 QCs = ActiveWorkbook 希望澄清一下。
    • 但您在此代码中有其他方式:一旦您打开 QCs,它就会变为活动状态,并且该工作簿上处于活动状态的任何工作表/单元格都将填充您的公式,这使得 VLOOKUP 返回 currwor
    • 不确定你的意思。是的,我正在尝试重新查找 currwor,因为我正在尝试将更新后的数据从那里提取到 QC 中。但是它显然超出了范围。
    • 啊!正如预期的那样。您需要先添加一行以返回到 currwor currwor.Activate,这将使您返回到它,然后在任何活动的单元格中它都会执行您的VLOOKUP,但是在上面的原始行中,您需要更改currwor.WorksheetsQCs.Worksheets
    • 我想我可能把你弄糊涂了。我想将值放在 QC 中的活动单元格中,但要从当前的数据库中查找它。不知何故,它说下标超出范围......
    【解决方案2】:

    是的 - 愚蠢的错误。正如所指出的工作表名称不正确,问题是在执行过程中我跳过了将工作表分配给 currwor 的位。

    太愚蠢了,我应该考虑在此处删除此帖子。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-12-09
      • 1970-01-01
      相关资源
      最近更新 更多