Расположение и нумерация листов в книге Excel.

Программирование на Visual Basic for Applications
Rust
Новичок
Новичок
 
Сообщения: 42
Зарегистрирован: 01.02.2005 (Вт) 14:41

Расположение и нумерация листов в книге Excel.

Сообщение Rust » 30.01.2008 (Ср) 8:44

Здравствуйте!
Есть книга, в которой первые четыре листа служебные (Лист2, Лист3, Лист4 скрыты).
NameSheet="НовЛист"
Из кода VBA создаётся новый лист на основе шаблона(Лист2).
ThisWorkbook.Sheets("Лист2").Copy After:=ThisWorkbook.Sheets(ThisWorkbook.Worksheets.Count)
ActiveSheet.Name = NameSheet
Почему новый лист оказывается между Листами 2 и 3?
Этот код показывает, что индексы листов изменились.
For i = 1 To ThisWorkbook.Worksheets.Count
ПроверяюИндексЛиста= Sheets(i).Name
Next i
Как сделать так, чтобы первые четыре листа оставались в пределах индексов с 1 по 4, а все вновь создаваемые с 5 и далее.
Т.к. пользователь должен работать(создавать, удалять, редактировать) только новые листы и обработка этих данных у меня реализована примерно так:
For i = 5 To ThisWorkbook.Worksheets.Count
' Работаем с данными
Next i

Rust
Новичок
Новичок
 
Сообщения: 42
Зарегистрирован: 01.02.2005 (Вт) 14:41

Сообщение Rust » 30.01.2008 (Ср) 8:50

Пока думаю в цикле пропускать служебные листы, сравнивая по имени. Но может есть другой способ?

anvg
Обычный пользователь
Обычный пользователь
 
Сообщения: 66
Зарегистрирован: 20.05.2007 (Вс) 18:04

Сообщение anvg » 30.01.2008 (Ср) 10:14

Rust

А зачем?
Пока думаю в цикле пропускать служебные листы

Установите следующий порядок в книге. Служебные скрытые листы идут первыми. Единственный видимый лист последним. Тогда создаваемый по шаблону лист будет иметь наибольший индекс. Цикл же будет начинаться с индекса видимого листа по последний.
С другой стороны, можно создавать листы по шаблону из книги с одним листом-шаблоном, что позволит исключить скрытые листы.
Код: Выделить всё
ThisWorkbook.Sheets.Add Type:="path\myblanksheet.xls"

Только как вы будете контролировать произвольно созданные пользователем листы?

Rust
Новичок
Новичок
 
Сообщения: 42
Зарегистрирован: 01.02.2005 (Вт) 14:41

Сообщение Rust » 30.01.2008 (Ср) 10:37

Пользователем будут создаваться, редактироваться и удаляться листы только из формы. Структура книги будет защищена. Все листы, кроме Главного будут скрыты, поэтому я хочу всё управление листами осуществлять из кода.

Rust
Новичок
Новичок
 
Сообщения: 42
Зарегистрирован: 01.02.2005 (Вт) 14:41

Сообщение Rust » 30.01.2008 (Ср) 16:30

anvg, Спасибо!
Воспользовался советом. Всё работает отлично.
Хотя, странно, почему новому листу присваивается индекс, следующий за последним отображённым листом, а не индекс, следующий за последним по порядку листом Книги.


Вернуться в VBA

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 60

    TopList