【问题标题】:Replacing Sheet and losing Range References更换工作表并丢失范围参考
【发布时间】:2020-10-06 14:05:46
【问题描述】:

我有一个名为“产品”的工作簿,有 2 张纸。表 1(“全局”)由表 2 引用的许多范围组成。我有另一个“主”工作簿,其中包含一个(“全局”)工作表,其范围与“产品”工作簿的所有范围相同。

“主”工作簿是修改然后保存范围的所有值的地方。然后从“产品”工作簿中删除(“全局”)工作表,然后从“主”工作簿中导入(“全局”)工作表。

问题是工作表 2 中的所有单元格都丢失了它们所引用的范围,即使我正在导入具有相同名称的工作表并且它包含完全相同的范围名称。

我可以在我的代码中添加什么来解决这个问题吗?

Sub ImportGlobalSheets()

Dim GlobalsFile As String
Dim GlobalsFolder As String

Application.ScreenUpdating = False

   GlobalsFolder = Left(ThisWorkbook.Path, InStrRev(ThisWorkbook.Path, "\") - 1) & "\Globals\"
   GlobalsFile = GlobalsFolder & "Master Globals.xlsx"
   
    Workbooks.Open (GlobalsFile)
        Sheets.Copy Before:=ThisWorkbook.Sheets(1)
    Workbooks("Master Globals").Close SaveChanges:=False
    
End Sub

【问题讨论】:

    标签: excel vba


    【解决方案1】:

    一个想法:
    我认为您应该在删除全局表之前复制产品表。 (否则您会丢失参考。)复制工作表后,它应该成为活动工作表。 (它具有对另一个工作簿的引用。)您可以删除对另一个工作簿的引用部分,将其替换为空(空字符串)(工作簿名称和扩展名)。

    ActiveSheet.UsedRange.Replace _
          What:="[NameOfYourOldWorkbook.xlsm]", Replacement:="", _
          SearchOrder:=xlByColumns, MatchCase:=True
    

    然后你可以删除你想要的工作表。我希望它对你有用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-10-30
      • 2012-04-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-04-04
      • 1970-01-01
      相关资源
      最近更新 更多