![](/img/trans.png)
[英]Why do I get #N/A's when using VLookup in VBA to reference another Excel file?
[英]Using VLookup in VBA to reference another Excel file
我正在嘗試在VBA中編寫一個引用另一個文件的VLookup表。 以下是我的目標的簡單概述:
這是我已經擁有的代碼。 我一直收到一條錯誤,上面寫着“無法獲取WOrksheetFunction類的VLookup屬性”。 我檢查了引用該錯誤的其他帖子,但他們沒有任何幫助。 你們都看到我的代碼中有錯誤嗎? 或者有沒有人有更好的方法來完成這項任務?
Sub SBEPlannerAdder()
Dim wbk As Workbook
Set wbk = Workbooks.Open("C:\Users\user\Documents\Support File\Planner.xlsx")
With Sheets("Sheet1")
' Selects the first cell to check
Range("A2").Select
Dim x As Variant
x = wbk.Worksheets("Sheet1").Range("A1:C1752")
' Loops through all rows until an empty row is found
Do Until IsEmpty(ActiveCell)
Range(ActiveCell.Offset(0, 1) & ActiveCell.Row).Value = Application.WorksheetFunction.VLookup((ActiveCell.Column & ActiveCell.Row), x, 2, 0)
ActiveCell.Offset(1, 0).Select
Loop
End With
Call wbk.Close(False)
End Sub
當您打開工作簿時,它將成為活動工作簿。 看起來你從未將控制權傳回目標工作簿。
Sub SBEPlannerAdder()
Dim rw As Long, x As Range
Dim extwbk As Workbook, twb As Workbook
Set twb = ThisWorkbook
Set extwbk = Workbooks.Open("C:\Users\user\Documents\Support File\Planner.xlsx")
Set x = extwbk.Worksheets("Sheet1").Range("A1:C1752")
With twb.Sheets("Sheet1")
For rw = 2 To .Cells(Rows.Count, 1).End(xlUp).Row
.Cells(rw, 2) = Application.VLookup(.Cells(rw, 1).Value2, x, 2, False)
Next rw
End With
extwbk.Close savechanges:=False
End Sub
請參閱如何避免在Excel VBA宏中使用Select以獲取更多方法, 以避免依賴select和activate來實現目標。
這取決於你是打算一次性還是反復做這件事。 我反復假設,因為手動這樣做並不是那么困難。
我要看的第一件事是你的論點。 前兩個應該是范圍。 所以要明確,也許你可以做類似的事情
Dim x As Range
set x = wbk.Worksheets("Sheet1").Range("A1:C1752")
...
Range(ActiveCell.Offset(0, 1) & ActiveCell.Row).Value = Application.WorksheetFunction.VLookup(Range(Activecell.Address), x, 2, 0)
重要的一點是確保前兩個參數是Vlookup函數的范圍。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.