26

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

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

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

我在一个循环中执行此操作,并且每张纸都被添加到图纸中的第二个位置。有 2 张表格永久存在(信息和摘要),然后我再添加 5 个称为“测试”1 到 5 的表格。我总是按以下顺序完成表格:

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

但我想要/期待的是:

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

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

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

我究竟做错了什么?

4

4 回答 4

45

试试这个

mainWB.Sheets.Add(After:=mainWB.Sheets(mainWB.Sheets.Count)).Name = new_sheet_name
于 2012-07-12T16:17:25.890 回答
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 
于 2012-07-12T16:18:37.277 回答
3

一个常见的错误是

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

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

于 2014-09-15T21:11:25.217 回答
1

确保完全限定您的工作表与他们引用的工作簿!

 mainWB.Sheets.Add(After:=mainWB.Sheets(mainWB.Sheets.Count)).Name = new_sheet_name
于 2012-07-12T16:20:28.787 回答