【问题标题】:Adding sheets to end of workbook in Excel (normal method not working?)在 Excel 中将工作表添加到工作簿末尾(正常方法不起作用?)
【发布时间】:2012-07-12 16:15:49
【问题描述】:

这是我用来尝试将新工作表添加到工作簿最后一个位置的 VBA 代码

mainWB.Sheets.Add(After:=Sheets(Sheets.Count)).Name = new_sheet_name

我在这个网站上的一个类似问题中看到了这一点。它不工作。

我在一个循环中执行此操作,每个工作表都被添加到工作表中的第二个位置。有 2 张表格永久存在(信息和摘要),然后我再添加 5 个称为“测试”的表格 1 到 5。我总是按以下顺序完成表格:

Info, sheet5, sheet4, sheet3, sheet2, sheet1, Summary

但我想要/期待的是:

Info, Summary, sheet1, sheet2, sheet3, sheet4, sheet5

(循环确实以预期的顺序产生它们,所以问题不存在。)

如果我在开始之前交换摘要和信息表,那么当我完成时它们会在相反的位置。

我做错了什么?

【问题讨论】:

    标签: vba excel


    【解决方案1】:

    试试这个

    mainWB.Sheets.Add(After:=mainWB.Sheets(mainWB.Sheets.Count)).Name = new_sheet_name
    

    【讨论】:

    • 好的,这行得通....但我一开始只使用一个工作簿,那为什么会导致问题?
    • 如果我没记错的话,您至少有 2 个 WB 处于打开状态。你能仔细检查一下吗? mainWB指的是哪个WB?
    • 哦等等...没关系,我放弃了宏正在打开的 CSV 文件。谢谢...再次...您似乎已经回答了我 50% 的问题 XD
    • 还剩下哪 50%? :)
    • @SiddharthRout 对不起,你误解了我,我的意思是你已经回答了我在 SE 上大约 50% 的问题。
    【解决方案2】:
    mainWB.Sheets.Add(After:=Sheets(Sheets.Count)).Name = new_sheet_name 
    

    应该是

    mainWB.Sheets.Add(After:=mainWB.Sheets(mainWB.Sheets.Count)).Name = new_sheet_name 
    

    【讨论】:

    • + 1 同时发帖 :)
    【解决方案3】:

    一个常见的错误是

    mainWB.Sheets.Add(After:=Sheets.Count)
    

    导致Error 1004。虽然从官方文档中看不清楚,但事实证明'After'参数不能是整数,它必须是对同一工作簿中工作表的引用。

    【讨论】:

      【解决方案4】:

      确保完全限定您的工作表与他们引用的工作簿!

       mainWB.Sheets.Add(After:=mainWB.Sheets(mainWB.Sheets.Count)).Name = new_sheet_name
      

      【讨论】:

        猜你喜欢
        • 2017-03-03
        • 2017-12-21
        • 1970-01-01
        • 1970-01-01
        • 2012-08-12
        • 1970-01-01
        • 2021-10-03
        • 1970-01-01
        相关资源
        最近更新 更多