这是用于尝试将新工作表添加到工作簿中最后一个位置的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
(循环确实以预期的顺序产生它们,所以问题不存在。)
如果我在开始之前交换摘要和信息表,那么当我完成时它们就在相反的位置。
我做错了什么?
答案 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