我的 Excel 电子表格非常大。Excel 认为大量单元格具有循环引用。但是这些并不是真正的循环引用,我希望避免所有这些错误消息,而不必逐个忽略或更改数千个单元格。我是否可以阻止 Excel 程序将这些归类为错误,或者我可以让 Excel 忽略所有这些错误并允许我在每次打开电子表格或工作簿时不受阻碍地使用公式。我希望该解决方案不会降低计算机的处理速度。
答案1
悬赏要求找到一种方法来完全禁用 Excel 应用程序中的循环引用消息。目前还没有已知的黑客或注册表项可以做到这一点,所以我能建议的只是一种方法,只要消息出现,就可以立即自动关闭。
此消息实际上非常重要,因为不应启用“启用迭代计算”选项,因为在数据输入错误的情况下可能会丢失工作簿(除非您确实依赖它)。请参阅文章 断路器 – 如何修复 Excel 中的循环引用错误 对于可能因输入错误一个字符而遭到破坏的示例工作簿以及问题的解释,甚至解决方案(并不容易应用)。
我使用免费自动热键 检测对话框出现时的情况并立即关闭它。
以下脚本将创建一个每 200 毫秒执行一次的计时器,检查对话框,如果找到则关闭它。这是一个低资源检查,不会对您的性能产生明显影响
#Persistent
SetTimer, checkCircular, 200
checkCircular:
If WinExist("ahk_class #32770", "There are one or more circular references")
{
WinClose
}
Return
安装 AutoHotKey 后,将上述文本放入一个.ahk
文件中并双击进行测试。您可以通过右键单击托盘栏中的绿色 H 图标并选择退出来停止脚本。要让它在登录时运行,请将其放在 的启动组中
C:\Users\USER-NAME\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup
。
请注意,如果您的工作簿中有循环引用,我建议您找到并删除它们。这是消除此消息的最佳方法。
答案2
mrexcel.com 上的这个主题给出了使用 VBA 宏的解决方案。请注意,这将抑制任何警告消息,而不仅仅是有关循环引用的警告消息:
Private Sub Workbook_Open()
If errormsg Then SendKeys "{esc}", True End If
End Sub
欲了解更多详情,请查看本教程介绍如何在打开工作簿时运行宏
如果你在编辑时遇到同样的问题,你也可以在特定的单元格区域触发宏(改编从这里):
Private Sub Worksheet_Change(ByVal Target As Range)
Dim KeyCells As Range
' The variable KeyCells contains the cells that will suppress the warning
Set KeyCells = Range("A1:C10")
If Not Application.Intersect(KeyCells, Range(Target.Address)) _
Is Nothing Then
' When one of the designated cells has been changed
If errormsg Then SendKeys "{esc}", True End If
End If
End Sub
答案3
如果电子表格包含循环公式,并且您想要禁用此计算:
- 打开菜单文件 > 选项 > 公式
- 在“计算选项”部分中:
- 取消选中“启用迭代计算”将阻止计算,并且您将收到一次性警告消息(如果存在任何循环引用)
- 或者,启用它,但将“最大迭代次数”设置为非常低的值
- 单击“确定”。