在Excel中将工作表添加到工作簿的末尾(正常方法不起作用?)

时间:2012-07-12 16:15:49

标签: excel vba excel-vba

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

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

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

我在循环中执行此操作,每张工作表都会添加到工作表中的第二个位置。永久存在2张纸(信息和摘要),然后我再添加5张名为“test”1到5的纸张。我总是按照这个顺序最终得到纸张:

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

但我想要/期待的是:

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

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

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

我做错了什么?

4 个答案:

答案 0 :(得分:34)

试试这个

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

答案 1 :(得分:7)

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

应该是

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

答案 2 :(得分:2)

常见的错误是

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

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

答案 3 :(得分:1)

请务必使用他们引用的工作簿完全限定您的工作表!

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