0 / 0 / 0
Регистрация: 08.05.2013
Сообщений: 23
|
|||||||||||
1 | |||||||||||
Удалить все листы кроме первого04.07.2013, 15:24. Показов 18699. Ответов 10
Метки нет (Все метки)
0
|
04.07.2013, 15:24 | |
Ответы с готовыми решениями:
10
Удалить все листы, кроме заданных (excel_2010_VBA) Удалить все листы кроме активного Массив: из заданного массива удалить все дубликаты, кроме первого и последнего вхождения... Записать значения во все листы , кроме |
54 / 39 / 3
Регистрация: 25.01.2013
Сообщений: 368
|
||||||
04.07.2013, 15:57 | 2 | |||||
- Если у листа, который Вы планируете удалить, значение свойства Visible установлено как xlVeryHidden/xlSheetVeryHidden, то попытка его удаления приведёт к ошибке, которую можно избежать, если перед удалением сделать лист видимым, т.е. установить значение свойства Visible = True/xlSheetVisible
- После удаления листа, в рабочей книге должен остаться, как минимум, один видимый лист - Нельзя удалить лист, если рабочая книга является общей - Нельзя удалить лист, если структура рабочей книги защищена Добавлено через 7 минут это то что по правилам, а ксательно вашего примера вы подсчитываете количество листов, а удалять хотите по его индексу
0
|
997 / 356 / 135
Регистрация: 27.10.2006
Сообщений: 764
|
||||||
04.07.2013, 16:20 | 3 | |||||
Попробуйте так
1
|
04.07.2013, 16:25 | 4 | |||||
Нужно перевернуть цикл. Ошибка возникает потому, что когда Вы удаляете лист № 2, порядковые номера листов смещаются. Когда цикл доходит до конца, то листа с номером Worksheets.Count (на тот момент) уже не существует.
Опередили.
1
|
0 / 0 / 0
Регистрация: 08.05.2013
Сообщений: 23
|
|
04.07.2013, 16:36 [ТС] | 5 |
Ни один из листов не скрывался, то есть должны быть видимы по умолчанию. Книга не защищена - все по умолчанию.
А сам макрос делался для того чтобы удалить все листы кроме первого, то есть в любом случае, как минимум один лист остается. А разве индекс устанавливается не по порядку листов? То есть, подсчет количества листов должен быть аналогичен индексу последнего листа. Цикл на удаления по задумке должен удалять все листы с индексом от второго до последнего по порядку из существующих. Добавлено через 3 минуты Блин, а ведь точно же)) все как всегда элементарно просто... Спасибо большое, ребят)
0
|
0 / 0 / 0
Регистрация: 08.05.2013
Сообщений: 23
|
|
04.07.2013, 16:49 [ТС] | 7 |
Получается удаляет каждый второй лист пока не останется лишь один. Очень даже неплохо)
0
|
призрак
|
||||||
05.07.2013, 07:25 | 8 | |||||
Сообщение было отмечено как решение
Решение
если удалять листы по очереди - слишком долго, то можно поступить так:
4
|
05.07.2013, 10:29 | 9 | ||||||||||
ikki, да, это будет наиболее быстро.
Тогда еще и вначале добавить:
0
|
54 / 39 / 3
Регистрация: 25.01.2013
Сообщений: 368
|
|
05.07.2013, 11:00 | 10 |
у меня вот вопрос по этой теме, вот визуально в ленте листов допустим первый лист "Первый", а вот в редакторе VBA он Лист 19 (Первый) на пятом месте, а если нужно оставить Лист1, а остальные удалить?
0
|
05.07.2013, 11:11 | 11 | |||||
Тогда так:
0
|
05.07.2013, 11:11 | |
05.07.2013, 11:11 | |
Помогаю со студенческими работами здесь
11
Из каждой строки перенести в новую ячейку все знаки кроме первого слова Удалить все ячейки кроме одинаковых Удалить в строках все, кроме цифр Удалить всё, кроме параграфов, которые содержат введённый текст Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |