2012-07-12 36 views
15

这是使用尝试新的工作表在工作簿中添加表在Excel中结束工作簿(正常方法不能正常工作?)

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

我在看到这个加入到最后的地方VBA代码IM类似的问题在这个网站上。它不工作。

我在循环中执行此操作,并将每个工作表添加到工作表中的第二个位置。有2张是永久存在(信息及摘要),然后我先加5个所谓的“测试” 1至5我总是按次序用床单结束:

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

但我希望/在期待是:

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

(循环就产生他们预期的顺序,所以这个问题是不存在的。)

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

我在做什么错?

回答

23

试试这个

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

好吧,那有效......但我只是在首先使用一个工作簿,所以为什么会造成问题? – Jacxel 2012-07-12 16:21:13

+0

如果我没有错,至少有2个WB打开。你可以仔细检查?哪个WB是'mainWB'指的? – 2012-07-12 16:23:06

+0

哦,等等...从来没有,我forgor宏开放的CSV文件。再次感谢...你似乎已经回答了我的问题50%XD – Jacxel 2012-07-12 16:25:45

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

也许应该

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

@Siddharth - 击败我! – 2012-07-12 16:19:20

+0

+ 1没有那么多同时发帖:) – 2012-07-12 16:19:33

+0

我55秒太慢了。 – danielpiestrak 2012-07-12 16:20:57

1

一定要完全限定你的床单与工作簿它们在引用!

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

一个常见的错误是

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

导致错误1004虽然目前尚不清楚,在所有的正式文件,事实证明,在“后”参数不能是整数,它必须是对同一工作簿中工作表的引用。