【发布时间】:2022-06-15 18:48:36
【问题描述】:
我有一个名为 amazonExpenses.xlsx 的工作簿,其中包含要在许多工作簿之间共享的数据。
我有一个名为 tapeCalcForAmazon.xlsm 的工作簿,它从 amazonExpenses.xlsx 工作簿外部引用数据。
在 vlookup 函数中引用来自 amazonExpenses.xlsx 工作簿的数据进展顺利。
=VLOOKUP(A9,'D:\[AmazonExpenses.xlsx]Sheet1'!$A$9:$C$15,3,FALSE)
当我打开 tapeCalcForAmazon.xlsm 工作簿时,这会起作用并显示数据。
这在 amazonExpenses.xlsx 文件关闭和打开时有效。
但是当我将数据引用从 amazonExpenses.xlsx 传递到 tapeCalcForAmazon.xlsm 中的 VBA 函数时,问题就开始了。
=findInBetween(E7,'D:\[AmazonExpenses.xlsx]Sheet1'!$J$2:$J$24,'D:\[AmazonExpenses.xlsx]Sheet1'!$K$2:$K$24,'D:\[AmazonExpenses.xlsx]Sheet1'!$L$2:$L$24)
findInBetween 是我的自定义 VBA 函数,在 tapeCalcForAmazon.xlsm
Public Function findInBetween(valueToFind As Variant, ByRef lowBound As Range, ByRef upperBound As Range, ByRef resultArr As Range) As Variant
Dim ans As Variant: ans = 0
For i = 0 To lowBound.Count
If valueToFind >= lowBound(i) And valueToFind <= upperBound(i) Then
ans = resultArr(i)
Exit For
End If
Next i
findInBetween = ans
End Function
当我打开 tapeCalcForAmazon.xlsm 工作簿时,我在单元格 D9 中得到 #VALUE!。
在 VBA 函数中传递来自其他工作簿的引用不起作用。
但是,当我打开 amazonExpenses.xlsx 时 tapeCalcForAmazon.xlsm 已经打开,该功能就会起作用并自动使用数据更新所有单元格。
我不想一直打开 amazonExpenses.xlsx 文件。它应该可以在关闭此文件的情况下使用。
【问题讨论】:
标签: excel vba excel-formula