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

Vba 在Excel中将工作表添加到工作簿末尾(正常方法不起作用?),vba,excel,Vba,Excel,这是我用来尝试将新工作表添加到工作簿中最后一个位置的VBA代码 mainWB.Sheets.Add(After:=Sheets(Sheets.Count)).Name = new_sheet_name 我在这个网站上的一个类似问题中看到了这一点。它不起作用 我在循环中这样做,每个工作表都被添加到工作表中的第二个位置。这里有两张永久存在的表格(信息和摘要),然后我在前面添加了5张,称为“测试”1到5。我总是以以下顺序结束工作表: Info, sheet5, sheet4, sheet3, she

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

mainWB.Sheets.Add(After:=Sheets(Sheets.Count)).Name = new_sheet_name
我在这个网站上的一个类似问题中看到了这一点。它不起作用

我在循环中这样做,每个工作表都被添加到工作表中的第二个位置。这里有两张永久存在的表格(信息和摘要),然后我在前面添加了5张,称为“测试”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:=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。虽然官方文档中根本不清楚,“After”参数不能是整数,但它必须是对同一工作簿中工作表的引用。

+1尽管如此,在同一时间发布:)好,这是可行的……但我一开始只使用了一个工作簿,为什么会出现问题?如果我没有错的话,您至少打开了两个WBs。你能再检查一下吗?哪个WB是
mainWB
所指的?哦,等等……没关系,我放弃了宏正在打开的CSV文件。再次感谢……您似乎已经回答了我50%的问题(还有哪50%的问题?:)@悉达多抱歉你误解了我,我的意思是你已经回答了我关于SE的大约50%的问题。
mainWB.Sheets.Add(After:=Sheets.Count)