Добавление листов в конец рабочей книги в Excel (обычный метод не работает?)

Это код VBA im, использующий попытку добавления нового листа в последнее место в книге

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

(цикл производит их в ожидаемом порядке, поэтому проблема не существует).

Если я поменю сводки и информационные листы, прежде чем я начну, они будут в противоположных местах, когда я закончу.

Что я делаю неправильно?

Ответы

Ответ 1

Попробуйте это

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

Ответ 2

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

должен быть

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

Ответ 3

Обязательно полностью квалифицируйте свои листы, с которыми они ссылаются.

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

Ответ 4

Общей ошибкой является

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

что приводит к ошибке 1004. Хотя это не совсем понятно из официальной документации, выясняется, что параметр "После" не может быть целым числом, он должен быть ссылкой на лист в той же книге.