【发布时间】:2019-07-17 18:13:05
【问题描述】:
我有一个客户手里拿着一堆应该标准化的工作表。它们是通过导入 CSV 文件创建的。基本上,我需要在从另一个选项卡引用它们时替换当前的手册表,而不会破坏当前的引用。
我已将问题简化为包含 2 张纸的单个工作簿。 Sheet1 单元格 A1 引用 Sheet2 单元格 A1,其中包含字符串“Sheet2A1CellData”
下面注释掉的所有内容都已尝试过,包括 Application.Volatile 和 Application.Calculation。
Option Explicit
Sub TestSheet2Delete()
Dim TmpSheet2 As Worksheet: Set TmpSheet2 = Sheets("Sheet2")
'Application.Volatile
If TmpSheet2 Is Nothing Then
Exit Sub
End If
'Application.Calculation = False
Application.DisplayAlerts = False
TmpSheet2.Delete
Application.DisplayAlerts = True
Set TmpSheet2 = Worksheets.Add(After:=Sheets("Sheet1"))
If TmpSheet2 Is Nothing Then
Exit Sub
End If
TmpSheet2.Name = "Sheet2"
TmpSheet2.Range("A1").Value = "Sheet2A1CellData"
'Application.Calculation = True
End Sub
Sheet1 A1 最初是 =Sheet2!A1。当我从 VBE 运行上述函数时,Sheet1 单元格 A1 设置为 =#REF!A1。
更换工作表后如何保持参考有效?
显然,现实世界的问题要大得多,重新导入 CSV 数据需要更新 132,000 个单元格。 6000 行 x 22 列。
感谢您的帮助。
【问题讨论】: