| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Программирование, связанное с MS Office > Сортировка листов(вкладок) по алфавиту |
| Автор: olga90 20.3.2008, 09:57 |
| Как программно отсортировать листы(вкладки) по алфавиту |
| Автор: olga90 20.3.2008, 14:01 | ||||||||
| Мне нужно сделать сортировку всех листов по алфавиту по возрастанию А, Б, В (через макрос), исключив из этой сортировки 2 листа с названием, например, "Лист1" и "Лист23" ? Делаю так
материться на ActiveWorkbook.Sheets(SheetNames(i)).Move ActiveWorkbook.Sheets(i) Добавлено через 13 минут и 54 секунды
ничего не возвращает :( Показывает пустоту |
| Автор: Akina 20.3.2008, 15:29 | ||
|
| Автор: olga90 20.3.2008, 16:03 | ||
| спасибо а как сделать сортировку всех листов по алфавиту по возрастанию А, Б, В (через макрос), исключив из этой сортировки 2 листа с названием, например, "Лист1" и "Лист23" и только видимые?
так сработает? или я с индексами перепутала? |
| Автор: olga90 21.3.2008, 11:40 |
| up |
| Автор: olga90 21.3.2008, 13:24 |
| 2) как перед сортировкой узнать позицию нужных мне вкладок чтобы после сортировки вернуть на место - т.е. имитировать как будто они не включены в сортировку |
| Автор: Akina 21.3.2008, 13:47 |
Создать динамический массив. Пройти по коллекции листов. Для каждого листа, если он должен быть исключен из сортировки (по имени или скрытости), запоминать в массив имя и порядковый номер. Отсортировать массив по возрастанию исходных позиций листов (впрочем, если выгребать их, проходя по индексу, он будет сразу сортирован именно так). Затем пройти по массиву, и каждый лист из него перемещать в конец книги. Посчитать количество листов в массиве и в книге, выяснить, сколько листов надо сортировать. Выполнить сортировку листов. Опять пройти по массиву, восстанавливая положение листов, исключенных из сортировки, в порядке возрастания исходных номеров. При этом листы брать по имени, а не по индексу. Все. |
| Автор: olga90 21.3.2008, 14:02 |
| слишком сложно для меня :( объясните пожалуйста почему ошибка в коде, который я привела выше ругается на ActiveWorkbook.Sheets(SheetNames(i)).Move ActiveWorkbook.Sheets(i) |
| Автор: olga90 22.3.2008, 15:17 |
| up |
| Автор: olga90 27.3.2008, 08:09 |
| ??? |
| Автор: mihanik 5.4.2008, 13:18 | ||||
т.к. не хватает части оператора. См. пример который привёл akina Sheets(j).Move Before:=Sheets(i)
|