Гость
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Сортировка листов в определенном порядке / 5 сообщений из 5, страница 1 из 1
13.09.2012, 14:53
    #37956159
danzki
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сортировка листов в определенном порядке
Добрый день, друзья

Можно ли как-то принудительно поставить лист на какую либо позицию?

Задача в следующем. Есть книга, в которой листы располагаются в следующем порядке

<S1><S2><S3>..<Sn><D1><D2><D3>..<Dn><L1><L2><L3>..<Ln>,

где S, D, L - определенная последовательность символов (одинаковая для листов S, D, L соответственно),
а 1, 2, 3 - различные в рамках S, D, L

а должны располагаться

<S1><D1><L1><S2><D2><L2>..<Sn><Dn><Ln>

Идея такая - сделать три массива в первом собрать Имена листов S, во Втором - листов D, в Третьем - листов L
Затем их расставлять по местам в цикле.

Опыта в VBA мало совсем, на уровне Записать макрос, посмотреть, адаптировать его под себя
Можно ли так сделать?
...
Рейтинг: 0 / 0
13.09.2012, 14:57
    #37956179
QValD
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сортировка листов в определенном порядке
danzki,
ну так запиши макрос с перемещением листа.

Код: vbnet
1.
Sheets(3).Move Before:=Sheets(2)
...
Рейтинг: 0 / 0
13.09.2012, 15:08
    #37956207
danzki
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сортировка листов в определенном порядке
Да я уже понял.
Собираем три массива.
Потом бежим от 1 до длинаМассива
и Sheet("D").Move After:=Sheet("S")

типа такой конструкции
...
Рейтинг: 0 / 0
14.09.2012, 11:29
    #37957318
analysts
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сортировка листов в определенном порядке
danzki, вот решение от одного из лучших профессионалов по похожей задаче. Может пригодится.
...
Рейтинг: 0 / 0
14.09.2012, 13:55
    #37957763
Казанский
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сортировка листов в определенном порядке
В Excel не надо заморачиваться с массивами и сортировкой :-)
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
Sub SortSheets_danzki()
Dim wb As Workbook, s, i&
Application.ScreenUpdating = False
Set wb = ActiveWorkbook
With Workbooks.Add(xlWBATWorksheet)
    For Each s In wb.Sheets
        i = i + 1
        s = s.Name
        Cells(i, 1) = s
        s = StrReverse(Val(StrReverse(s & "1")))
        Cells(i, 2) = Left(s, Len(s) - 1)
    Next
    [B1].Sort [B1], xlAscending, Header:=False
    i = 0
    For Each s In ActiveSheet.UsedRange.Columns(1).Cells.Value
        i = i + 1
        wb.Sheets(s).Move before:=wb.Sheets(i)
    Next
    .Close 0
End With
Application.ScreenUpdating = True
End Sub
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Сортировка листов в определенном порядке / 5 сообщений из 5, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]