![](/img/trans.png)
[英]Vlookup using USERFORM for extracting data from another workbook without opening
[英]Extract data from another workbook using VLOOKUP
我正忙於在 VBA 中創建自己的 function 以從同一目錄中的另一個工作簿中提取數據。 但是,當我從目標工作簿(工作簿 A)中將其稱為 function 時,它給了我一個VALUE!#
錯誤。 當我從測試代碼的子過程中調用 function 時,它成功地提取了正確的數據。
在 Excel 我這樣稱呼我的 function =CALCULATE_METERS("D1")
,並使用我在同一個模塊中這樣稱呼它的子過程對其進行測試:
Sub test()
CALCULATE_METERS ("D1")
CALCULATE_METERS ("D1,2")
CALCULATE_METERS ("D1-3")
CALCULATE_METERS ("D1-5,8,9")
CALCULATE_METERS ("D1(2),4(2),23(1),24-28")
CALCULATE_METERS ("D1,4(2),23-25,26-28(2);E1-4;A1-2")
End Sub
包含 VLOOKUP 代碼的 function 是(在CALCULATE_METERS
函數中調用):
Private Function GetSquareMeters(block As String, r As Integer) As Integer
Dim result As String
Dim meters As String
Dim wrkb As Workbook
Dim wrks As Worksheet
Dim rng As Range
Dim directory As String
Dim filename As String
filename = "DATA REFERENCE.xlsx"
directory = ActiveWorkbook.Path
filename = directory & "\" & filename
Debug.Print (filename)
Set wrkb = Workbooks.Open(filename)
meters = Application.WorksheetFunction.VLookup(block, wrkb.Worksheets("Lande").Range("$A$2:$F$120"), 5)
GetSquareMeters = CInt(meters) * r / 7
End Function
一切都立即打印在 window 中,直到上述 function 中的filename
,但我相信在查找 function 時會生成值錯誤。 為什么用相同的 arguments(excel 中的一個,子過程中的另一個)調用相同的 function 會給出不同的答案? 如何更正此問題,以便可以在 Excel 單元中使用 function?
謝謝!
嘗試使用 Find 而不是 VLookup:
Function GetSquareMeters(block As String, r As Integer) As Integer
Dim result As String
Dim meters As String
Dim wrkb As Workbook
Dim wrks As Worksheet
Dim rng As Range
Dim directory As String
Dim filename As String
filename = "DATA REFERENCE.xlsx"
directory = ActiveWorkbook.Path
filename = directory & "\" & filename
Debug.Print (filename)
For Each wb In Workbooks
If wb.FullName = Filename Then
Set wrkb = Workbooks(Filename)
Else
Set wrkb = Workbooks.Open(Filename)
End If
Next
meters = wrkb.Sheets("Lande").Range("$A$2:$F$120").Find(block).Offset(0, 4).Value
GetSquareMeters = CInt(meters) * r / 7
End Function
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.