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

这是VBA代码即时通讯使用尝试添加到工作簿中的最后一个位置的新工作表

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

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

我在一个循环中执行此操作,并将每个工作表添加到工作表中的第二个位置。 有2张是永久存在的(信息和摘要),然后在前面添加5个更多的称为“testing”1到5.我总是以这样的顺序结束:

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

但是我想要的/期望的是:

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

(循环确实以预期的顺序生成它们,所以问题不在那里)

如果我在开始之前交换总结和信息表,那么当我完成时,他们会在相反的地方。

我究竟做错了什么?

尝试这个

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

应该可能是

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

请务必完全符合您的工作簿参考的工作表的资格!

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

一个常见的错误是

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

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