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

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

Аленочка тм
...
Рейтинг: 0 / 0
Сортировка листов по алфавиту.
    #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
Сортировка листов по алфавиту.
    #33719572
Фотография Аленочка
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
большое большое спасибо!!

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

Аленочка тм
...
Рейтинг: 0 / 0
Сортировка листов по алфавиту.
    #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
Сортировка листов по алфавиту.
    #33719656
Фотография Аленочка
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
спасибо. а почему название листа мы передаём как строку? нельзя ли передать как объект? что-то вроде:

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

Аленочка тм
...
Рейтинг: 0 / 0
Сортировка листов по алфавиту.
    #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
Сортировка листов по алфавиту.
    #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
Сортировка листов по алфавиту.
    #33719698
Фотография Аленочка
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
спасибо всем вы мне очень помогли...
Аленочка тм
...
Рейтинг: 0 / 0
Сортировка листов по алфавиту.
    #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
Сортировка листов по алфавиту.
    #33839730
Фотография Ivan33
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
штука
...
Рейтинг: 0 / 0
Сортировка листов по алфавиту.
    #33893199
Фотография Ivan33
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Сортировка листов по алфавиту.
    #33944162
Фотография Ivan33
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Сортировка листов по алфавиту.
    #35017565
riksot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо за скрипты, но к сожалению третья работа не скачивается. пробел видимо помешал (
...
Рейтинг: 0 / 0
14 сообщений из 14, страница 1 из 1
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Сортировка листов по алфавиту.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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