#导入包含公式的工作表时出现REF错误+;VBA-Excel 2013版

#导入包含公式的工作表时出现REF错误+;VBA-Excel 2013版,vba,excel,Vba,Excel,我有两本工作手册,“旧”和“新”。两者都是相同的(都有相同的工作表集-工作表名称和全部-具有相同的公式) 我正在尝试将工作表A从“旧”导入“新”。我这样做的方式是从“新”中删除工作表A,然后将整个工作表(即“旧”工作表A)从“旧”复制到“新” wkbOld.worksheets("Sheet A").Copy After:=wkbNew.Worksheets(nPos) 'nPos is the position of Sheet A in these workbooks 表A中的公式引用

我有两本工作手册,“旧”和“新”。两者都是相同的(都有相同的工作表集-工作表名称和全部-具有相同的公式)

我正在尝试将工作表A从“旧”导入“新”。我这样做的方式是从“新”中删除工作表A,然后将整个工作表(即“旧”工作表A)从“旧”复制到“新”

 wkbOld.worksheets("Sheet A").Copy After:=wkbNew.Worksheets(nPos) 
'nPos is the position of Sheet A in these workbooks
表A中的公式引用了表B中的单元格。我还有一个表Z,其中的公式引用了表A中的单元格

导入时,我正在关闭“新建”中所有工作表的计算(toggleAutomaticCalculation false)。“导入”工作表后,我将启用自动计算(toggleAutomaticCalculation true)。我正在使用下面的sub来切换自动计算

Public Sub toggleAutomaticCalculation(bToggle As Boolean)
Dim wks As Worksheet

    For Each wks In ThisWorkbook.Worksheets
        wks.EnableCalculation = bToggle
    Next wks
End Sub
在我完成“导入”后,我在“新建”中的表格Z中发现#REF Errors,这些单元格中有引用表格A的公式,但现在导入的表格A中的公式工作正常(即,它们现在链接到新表格B)

我要导入的宏显示在“新建”中,从那里运行它们

我的问题如下:

  • 为什么#REF错误发生在工作表Z中,而它没有发生在工作表Z中 工作表A,尽管两个工作表都包含引用外部工作表的公式

  • 是否有办法防止工作表Z中的#REF错误

我目前唯一的选择是在导入后再次将原始公式放回工作表Z(使用单独的子项)

我正在使用Excel 2013,我希望它能在Excel 2013中运行

请帮忙。

我认为当您删除原始工作表A时,#REF错误将出现在工作表Z中,而不是在您复制新工作表时。这就是为什么工作表Z有#REF错误,而工作表A没有

我以前就遇到过这个问题,并找到了两种可能的解决方案。第一种方法是从“旧”a复制一个范围(可能是使用过的范围),然后将其粘贴到“新”a中。这应该避免所有的#REF错误。我找到的第二个选项是,在复制工作表a之前,在工作表Z中查找并用|等符号替换all=,然后将其更改回原来的位置。这可以有效地重新输入公式,但更容易

仔细考虑这个问题后,我建议您可能需要在删除“旧”A之前关闭自动更新功能(如果这不是您正在执行的操作)

我认为当您删除原始工作表A时,#REF错误将出现在工作表Z中,而不是在复制新工作表A时。这就是为什么工作表Z有#REF错误,而工作表A没有

我以前就遇到过这个问题,并找到了两种可能的解决方案。第一种方法是从“旧”a复制一个范围(可能是使用过的范围),然后将其粘贴到“新”a中。这应该避免所有的#REF错误。我找到的第二个选项是,在复制工作表a之前,在工作表Z中查找并用|等符号替换all=,然后将其更改回原来的位置。这可以有效地重新输入公式,但更容易


仔细考虑了这个问题后,我建议您在删除“旧”A之前可能需要关闭自动更新功能(如果这不是您正在执行的操作)

谢谢您的回答。选项#2是我目前正在做的事情,但有点像我自己的方式(再次从缓存中替换已存储在“new”中的相同公式)。但我认为这是一个非理想的解决方案。imho的理想解决方案是,在导入过程中,让excel停止将表格Z中的公式更改为#REF。不幸的是,在“导入”过程中停止并恢复对“新建”的自动计算对工作表A有效,但对工作表Z无效(正如我在问题中已经提到的)。我的推理如下:工作表A中引用工作表B中单元格的公式也应变为#REF,因为在我将A表从“旧”复制到“新”后,这些公式引用的是B表中的“旧”单元格,而B表中的“旧”单元格现在与这些公式无关。但这并没有发生。但是,即使在导入过程中自动计算停止,表Z中的公式(指表A)也会变成#REF。这让我很困惑,我想这是因为A表中的公式在所有点上都有B表可供参考。工作表Z公式并不总是可以访问工作表a。您是在删除“旧”a之前还是之后关闭自动计算功能?如果在那之后,我建议你在我关闭自动计算之前试试。尽管发生了此错误,但您是在删除之前还是之后执行此操作?如果在删除之前,我恐怕除了我已经说过的以外,我没有其他想法。谢谢你的回答。选项#2是我目前正在做的事情,但有点像我自己的方式(再次从缓存中替换已存储在“new”中的相同公式)。但我认为这是一个非理想的解决方案。imho的理想解决方案是,在导入过程中,让excel停止将表格Z中的公式更改为#REF。不幸的是,在“导入”过程中停止并恢复对“新建”的自动计算对工作表A有效,但对工作表Z无效(正如我在问题中已经提到的)。我的推理如下:工作表A中引用工作表B中单元格的公式也应变为#REF,因为在我将A表从“旧”复制到“新”后,这些公式引用的是B表中的“旧”单元格,而B表中的“旧”单元格现在与这些公式无关。但这并没有发生。但是,即使在导入过程中自动计算停止,表Z中的公式(指表A)也会变成#REF。这让我很困惑,我想这是因为A表中的公式在所有点上都有B表可供参考。工作表Z公式并不总是可以访问工作表a。您是在删除“旧”a之前还是之后关闭自动计算功能?如果之后我建议你试试