我有以下设置:
- 1 个以A1 中的
Workbook1
值命名的工作簿123
- 1 个以A1 中的
Workbook2
值命名的工作簿=[Workbook1.xlsx]Sheet1!$A$1
现在,当我将 的值更改Workbook1
为其他值时,该值将按预期更新Workbook2
。
但遗憾的是,当我最小化Workbook2
然后更改值Workbook1
并恢复Workbook2
以验证该值是否已更新时,它仍然显示旧值。
注意:
恢复窗口后,即使我计算(F9)或计算整个工作表(SHIFT + F9),值也不会更新
当我向其中添加新的工作表时,
Workbook2
值会更新(我发现这更像是巧合)
有没有办法来解决这个问题?
更新:
正如 Máté Juhász 在评论中提到的,实际上有多种方法可以更新值。
我自己发现切换视图会触发单元格更新,或者只是改变显示标尺、显示网格线、显示标题属性,它们都会触发单元格更新其值。
我还看了一下:
MsgBox Application.Range("A1").Value
MsgBox Application.Range("A1").Text
两者在旧值仍然可见时输出正确的值。
因此我想到,所有触发单元格的操作都有一个共同点,即屏幕会更新,所以我当前的“解决方案”如下:
Private Sub Workbook_WindowResize(ByVal Wn As Window)
Dim oldValue As Boolean
oldValue = Application.ScreenUpdating
Application.ScreenUpdating = Not oldValue
Application.ScreenUpdating = oldValue
End Sub
在了解到问题仅仅是屏幕没有更新之后,我还尝试简单地将单元格滚动出可见范围并向后滚动 - 这也更新了单元格的值。
此外,现在可以理解为什么 F9 和 SHIFT + F9 没有触发单元格更新,因为值已经正确了,只是没有什么可以计算更新的 - 因为它已经存在,只是不可见。
答案1
如果两个文件位于同一文件夹中,则会立即自动更新文件。
如果两个文件位于不同的文件夹中(在我的情况下也是不同的磁盘分区),则不会更新。要更新,请先保存您进行了更改的文件。然后转到另一个文件,选择要编辑的单元格(按 F2),按 Enter 而不进行任何更改。它会更新。
这可能不是一个错误,它可能与“更新外部链接”设置有关,这些设置太多了,我搞不清楚。了解这方面知识的人可能会给你一些启发。