【问题标题】:Excel - Error with vlookup across multiple workbooksExcel - 跨多个工作簿的 vlookup 错误
【发布时间】:2013-06-21 03:52:47
【问题描述】:

我的以下代码显示错误消息“应用程序定义或对象定义错误”,我不知道为什么。你能看看并帮我解决问题吗?

Private Sub CommandButton1_Click()

j = 3

For i = 1 To 46

Sheets("Income").Range(Cells(6, j), Cells(51, j)).Formula = "=VLOOKUP($B6,[" & Cells(5, i + 2).Value & ".xlsx]2 Intercompany markup!$A$1:$E$70,4,FALSE)"

j = j + 1

Next i

End Sub

感谢您的帮助。

【问题讨论】:

    标签: excel for-loop vlookup vba


    【解决方案1】:

    当您使用该语法在“收入”表上定义您的范围时,您需要为 .Range(Cells(x,y)) 指定表。

    你还应该声明你的变量。

    每次输入完全限定的工作表名称可能会很荒谬,因此您还应该声明一个工作表变量。

    试试这个:

        Dim ws As Worksheet
        Dim j As Integer
        Dim i As Integer
    
        Set ws = ThisWorkbook.Sheets("Income")
        j = 3
    
        For i = 1 To 46
    
            ws.Range(ws.Cells(6, j), ws.Cells(51, j)).Formula = _
                "=VLOOKUP($B6,[" & ws.Cells(5, i + 2).Value & ".xlsx]2 Intercompany markup!$A$1:$E$70,4,FALSE)"
            j = j + 1
    
        Next i
    

    【讨论】:

    • 现在它已经工作得更好了!谢谢 :) 但是,我得到一个随机的其他错误 - 通过宏完成几列后,它突然无法识别下一个工作簿的路径,尽管它与其他工作簿位于完全相同的位置。你知道如何解决这个问题吗?
    • 我相信这是一个不同的问题。最好的办法是在另一个问题中描述该问题以及代码及其失败之处。确保包含错误。
    • 事情是没有直接的“错误”发生;这真的很奇怪。您将拥有正确的文件名,例如[test.xlsx] 包括正确的工作表引用,但 Excel 会打开一个浏览器窗口,因为它无法识别该位置,尽管它与已识别的其他工作簿位于同一位置。你会碰巧知道这可能是什么吗?否则我会按照你的建议解决这个问题。无论如何,谢谢!
    • 每次运行时该行为是否同时发生?如果是这样,您可以单步执行代码(在代码窗口中使用 F8)并在发生时检查您的变量。这可能会帮助您找出问题所在。
    • 我不知道问题出在哪里,但问题只是以某种方式自行解决 - 完美运行,谢谢 :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多