Ответ 1
Попробуйте это
mainWB.Sheets.Add(After:=mainWB.Sheets(mainWB.Sheets.Count)).Name = new_sheet_name
Это код 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
(цикл производит их в ожидаемом порядке, поэтому проблема не существует).
Если я поменю сводки и информационные листы, прежде чем я начну, они будут в противоположных местах, когда я закончу.
Что я делаю неправильно?
Попробуйте это
mainWB.Sheets.Add(After:=mainWB.Sheets(mainWB.Sheets.Count)).Name = new_sheet_name
mainWB.Sheets.Add(After:=Sheets(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. Хотя это не совсем понятно из официальной документации, выясняется, что параметр "После" не может быть целым числом, он должен быть ссылкой на лист в той же книге.