Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Сортировка листов по алфавиту. / 14 сообщений из 14, страница 1 из 1
11.05.2006, 05:32:02
    #33719189
Аленочка
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сортировка листов по алфавиту.
Доброго времени суток!

Как можно в Excel'е сделать сортировку всех листов по алфавиту по возрастанию А, Б, В (через макрос), исключив из этой сортировки 2 листа с названием, например, "Лист1" и "Лист2" ?

Аленочка тм
...
Рейтинг: 0 / 0
11.05.2006, 09:57:13
    #33719492
vkodor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сортировка листов по алфавиту.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
Public Sub mySortList()
    Dim xlAp As New Excel.Application
    Dim xlWb As Excel.Workbook
    Dim x As Long
    Dim i As Integer
    Application.DisplayAlerts = False
    Set xlWb = xlAp.Workbooks.Add
    x =  1 
    For i =  1  To ThisWorkbook.Sheets.Count
        If ThisWorkbook.Sheets(i).Name <> "Лист1" And ThisWorkbook.Sheets(i).Name <> "Лист2" Then _
            xlWb.Worksheets( 1 ).Cells(x,  1 ).Value = ThisWorkbook.Sheets(i).Name: x = x +  1 
    Next i
    xlWb.Worksheets( 1 ).Columns("A:A").Sort Key1:=xlWb.Worksheets( 1 ).Range("A1"), _
        Order1:=xlAscending, Header:=xlGuess, OrderCustom:= 1 , MatchCase:=False, Orientation:=xlTopToBottom
    i =  1 
    Do While xlWb.Worksheets( 1 ).Cells(i,  1 ).Value <> ""
        ThisWorkbook.Sheets(xlWb.Worksheets( 1 ).Cells(i,  1 ).Value).Move Before:=Sheets(i)
    i = i +  1 
    Loop
    xlWb.Close False
    xlAp.Quit
    Set xlWb = Nothing
    Set xlAp = Nothing
    Application.DisplayAlerts = True
End Sub
...
Рейтинг: 0 / 0
11.05.2006, 10:17:04
    #33719572
Аленочка
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сортировка листов по алфавиту.
большое большое спасибо!!

Аленочка тм
...
Рейтинг: 0 / 0
11.05.2006, 10:19:41
    #33719583
Аленочка
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сортировка листов по алфавиту.
а интересно можно имена листов (их стабильно 2, но называться они могут по разному) передавать как параметры функции??

Аленочка тм
...
Рейтинг: 0 / 0
11.05.2006, 10:24:14
    #33719596
vkodor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сортировка листов по алфавиту.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
Public Sub mySortList(st1 As String, st2 As String)
    Dim xlAp As New Excel.Application
    Dim xlWb As Excel.Workbook
    Dim x As Long
    Dim i As Integer
    Application.DisplayAlerts = False
    Set xlWb = xlAp.Workbooks.Add
    x =  1 
    For i =  1  To ThisWorkbook.Sheets.Count
        If ThisWorkbook.Sheets(i).Name <> st1 And ThisWorkbook.Sheets(i).Name <> st2 Then _
            xlWb.Worksheets( 1 ).Cells(x,  1 ).Value = ThisWorkbook.Sheets(i).Name: x = x +  1 
    Next i
    xlWb.Worksheets( 1 ).Columns("A:A").Sort Key1:=xlWb.Worksheets( 1 ).Range("A1"), _
        Order1:=xlAscending, Header:=xlGuess, OrderCustom:= 1 , MatchCase:=False, Orientation:=xlTopToBottom
    i =  1 
    Do While xlWb.Worksheets( 1 ).Cells(i,  1 ).Value <> ""
        ThisWorkbook.Sheets(xlWb.Worksheets( 1 ).Cells(i,  1 ).Value).Move Before:=Sheets(i)
    i = i +  1 
    Loop
    xlWb.Close False
    xlAp.Quit
    Set xlWb = Nothing
    Set xlAp = Nothing
    Application.DisplayAlerts = True
End Sub

вызов
Public Sub test()
    mySortList "Лист2", "Лист3"
End Sub
...
Рейтинг: 0 / 0
11.05.2006, 10:38:30
    #33719656
Аленочка
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сортировка листов по алфавиту.
спасибо. а почему название листа мы передаём как строку? нельзя ли передать как объект? что-то вроде:

Код: plaintext
Public Sub mySortList(st1, st2 As worksheet)

Аленочка тм
...
Рейтинг: 0 / 0
11.05.2006, 10:46:40
    #33719679
big-duke
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сортировка листов по алфавиту.
Аленочкаспасибо. а почему название листа мы передаём как строку? нельзя ли передать как объект? что-то вроде:

Код: plaintext
Public Sub mySortList(st1, st2 As worksheet)

Аленочка тм
Можно только так
Public Sub mySortList(st1 as As worksheet , st2 As worksheet)
......
If not ThisWorkbook.Sheets(i) is st1 And not ThisWorkbook.Sheets(i).Name is st2 then
Поставить вместо
If ThisWorkbook.Sheets(i).Name <> st1 And ThisWorkbook.Sheets(i).Name <> st2 Then
...
Рейтинг: 0 / 0
11.05.2006, 10:47:10
    #33719680
vkodor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сортировка листов по алфавиту.
можно
но тогда условие д.б. таким
Код: plaintext
If ThisWorkbook.Sheets(i).Name <> st1.Name And ThisWorkbook.Sheets(i).Name <> st2.Name Then 


кстати
Код: plaintext
Public Sub mySortList(st1, st2 As worksheet)
это равносильно
Код: plaintext
Public Sub mySortList(st1 As Variant, st2 As worksheet)
правильно так
Код: plaintext
Public Sub mySortList(st1 As worksheet, st2 As worksheet)
...
Рейтинг: 0 / 0
11.05.2006, 10:50:10
    #33719698
Аленочка
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сортировка листов по алфавиту.
спасибо всем вы мне очень помогли...
Аленочка тм
...
Рейтинг: 0 / 0
07.06.2006, 04:24:00
    #33776407
Аленочка
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сортировка листов по алфавиту.
Продолжаю тему насчёт сортировки листов книги.

Заметила, что если в книге присутствуют скрытые листы, то сортировка производится некорректно, то есть нужно в условие сортировки добавить


Код: plaintext
1.
2.
3.
4.
 For i =  1  To ActiveWorkbook.Sheets.Count 
        If .... _
               And (ActiveWorkbook.Sheets(i).Visible = True) Then _
            xlWb.Worksheets( 1 ).Cells(x,  1 ).Value = ActiveWorkbook.Sheets(i).name: x = x +  1 
    Next i
Аленочка тм
...
Рейтинг: 0 / 0
07.07.2006, 21:55:18
    #33839730
Ivan33
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сортировка листов по алфавиту.
штука
...
Рейтинг: 0 / 0
01.08.2006, 22:09:46
    #33893199
Ivan33
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сортировка листов по алфавиту.
...
Рейтинг: 0 / 0
25.08.2006, 18:56:54
    #33944162
Ivan33
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сортировка листов по алфавиту.
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
18.12.2007, 13:57:53
    #35017565
riksot
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сортировка листов по алфавиту.
Спасибо за скрипты, но к сожалению третья работа не скачивается. пробел видимо помешал (
...
Рейтинг: 0 / 0
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Сортировка листов по алфавиту. / 14 сообщений из 14, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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