![]() |
Модераторы: mihanik |
![]() ![]() ![]() |
|
olga90 |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 59 Регистрация: 30.1.2007 Репутация: нет Всего: нет |
Как программно отсортировать листы(вкладки) по алфавиту
|
|||
|
||||
olga90 |
|
||||||||
Шустрый ![]() Профиль Группа: Участник Сообщений: 59 Регистрация: 30.1.2007 Репутация: нет Всего: нет |
Мне нужно сделать сортировку всех листов по алфавиту по возрастанию А, Б, В (через макрос), исключив из этой сортировки 2 листа с названием, например, "Лист1" и "Лист23" ?
Делаю так
материться на ActiveWorkbook.Sheets(SheetNames(i)).Move ActiveWorkbook.Sheets(i) Добавлено через 13 минут и 54 секунды
ничего не возвращает :( Показывает пустоту |
||||||||
|
|||||||||
Akina |
|
|||
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 26 Всего: 454 |
-------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
olga90 |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 59 Регистрация: 30.1.2007 Репутация: нет Всего: нет |
спасибо
а как сделать сортировку всех листов по алфавиту по возрастанию А, Б, В (через макрос), исключив из этой сортировки 2 листа с названием, например, "Лист1" и "Лист23" и только видимые?
так сработает? или я с индексами перепутала? Это сообщение отредактировал(а) olga90 - 20.3.2008, 16:08 |
|||
|
||||
olga90 |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 59 Регистрация: 30.1.2007 Репутация: нет Всего: нет |
up
|
|||
|
||||
Akina |
|
|||
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 26 Всего: 454 |
Запомнить порядковые номера скрытых и несортируемых листов, переместить их в конец, выполнить сортировку начала, переместить исключения на старые позиции. -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
olga90 |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 59 Регистрация: 30.1.2007 Репутация: нет Всего: нет |
2) как перед сортировкой узнать позицию нужных мне вкладок чтобы после сортировки вернуть на место - т.е. имитировать как будто они не включены в сортировку
|
|||
|
||||
Akina |
|
|||
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 26 Всего: 454 |
Создать динамический массив. Пройти по коллекции листов. Для каждого листа, если он должен быть исключен из сортировки (по имени или скрытости), запоминать в массив имя и порядковый номер. Отсортировать массив по возрастанию исходных позиций листов (впрочем, если выгребать их, проходя по индексу, он будет сразу сортирован именно так). Затем пройти по массиву, и каждый лист из него перемещать в конец книги. Посчитать количество листов в массиве и в книге, выяснить, сколько листов надо сортировать. Выполнить сортировку листов. Опять пройти по массиву, восстанавливая положение листов, исключенных из сортировки, в порядке возрастания исходных номеров. При этом листы брать по имени, а не по индексу. Все. -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
olga90 |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 59 Регистрация: 30.1.2007 Репутация: нет Всего: нет |
слишком сложно для меня :(
объясните пожалуйста почему ошибка в коде, который я привела выше ругается на ActiveWorkbook.Sheets(SheetNames(i)).Move ActiveWorkbook.Sheets(i) |
|||
|
||||
olga90 |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 59 Регистрация: 30.1.2007 Репутация: нет Всего: нет |
up
|
|||
|
||||
olga90 |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 59 Регистрация: 30.1.2007 Репутация: нет Всего: нет |
???
|
|||
|
||||
mihanik |
|
||||
![]() -=Белый Медведь=- ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 4054 Регистрация: 24.4.2006 Где: г. Тверь Репутация: 9 Всего: 109 |
т.к. не хватает части оператора. См. пример который привёл akina Sheets(j).Move Before:=Sheets(i)
|
||||
|
|||||
![]() ![]() ![]() |
Правила форума "Программирование, связанное с MS Office" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще!
|
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Программирование, связанное с MS Office | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |