【问题标题】:Excel - activating a previous workbook after leaving itExcel - 离开后激活以前的工作簿
【发布时间】:2016-01-27 10:20:37
【问题描述】:

我正在处理 Excel 中的当前工作簿。在 VBA 中,我做了以下事情:

Sheets("Upload File").Select
Cells.Select
Selection.Copy
Workbooks.Add
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
    :=False, Transpose:=False

所以现在,“Book1”是新的工作簿。一旦我完成了我需要在那里做的事情,我需要它然后激活原始工作簿,即我拥有所有 VBA 等的那个。

我关闭“Book1”:

ActiveWindow.Close

但是在进程的下一个 Sub 中,我无法调用活动工作簿中的任何工作表:

Sheets("Upload File").Range("A1:AB65536").ClearContents 

由于“上传文件”所在的工作簿实际上没有再次激活,我收到“下标超出范围”错误。

感谢您抽出宝贵时间查看此内容。

【问题讨论】:

    标签: excel vba


    【解决方案1】:

    处理此类问题的最佳方法是使用对象模型:为您需要跟踪的工作簿声明对象并将工作簿分配给它们。这样的对象不依赖于什么是“活动的”或“选择的”。例如:

    Dim wkbOriginal as Excel.Workbook
    Dim wkbNew as Excel.Workbook
    
    Set wkbOriginal = ActiveWorkbook
    'Do things here
    Set wkbNew = Workbooks.Add
    'Do more things
    wkbNew.Close
    'wkbOriginal is still accessible and can be used in your code
    

    【讨论】:

      猜你喜欢
      • 2019-03-15
      • 2023-03-24
      • 2017-01-16
      • 2014-07-02
      • 1970-01-01
      • 2019-12-05
      • 1970-01-01
      • 2015-03-15
      • 2019-03-03
      相关资源
      最近更新 更多