【问题标题】:Cells won't update until externally referred workbook is opened在打开外部引用的工作簿之前,单元格不会更新
【发布时间】: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

的单元格 D9 中调用
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.xlsxtapeCalcForAmazon.xlsm 已经打开,该功能就会起作用并自动使用数据更新所有单元格。

我不想一直打开 amazonExpenses.xlsx 文件。它应该可以在关闭此文件的情况下使用。

【问题讨论】:

    标签: excel vba excel-formula


    【解决方案1】:

    试试这个。这将自动打开数据工作簿并隐藏,它将更新您当前正在使用的工作簿中的任何数据。请注意,您将无法同时打开两者进行编辑。将此代码放在项目资源管理器的“ThisWorkbook”中,并将文件名更改为您的文件路径。

    Private Sub Workbook_Open()    
                                    
        Workbooks.Open Filename:="C:\Users\Me\Desktop\amazonExpenses.xlsx" 
        ActiveWindow.Visible = False   
        
    End Sub
    

    【讨论】:

      猜你喜欢
      • 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
      相关资源
      最近更新 更多