азбучен ред на sheet

4 отговора 0 прегледа
#1

азбучен ред на sheet

Здравейте, някой може ли да ми каже как да си направя преименувани shеet-ве по азбучен ред.

Отговор
в отговор на cи #2

Re: азбучен ред на sheet

Би лиобяснил по-подробно?

Отговор
в отговор на pgh #3

Re: азбучен ред на sheet

Имам екселски файл, като долу стрниците са ми именувани, например :

Иванов, Стоянов, Василев и т.н, до около 30 такива, като във всяка страница има дадена информация за тези хора.

Целта ми е да ги сортирам в азбучен ред , за да ги търся по-лесно.
Въпроса ми е : може ли това сортиране да се направи от някаква настройка в ексел, или трябва да ги местя ръчно?

Отговор
в отговор на Cи #4

Re: азбучен ред на sheet

Това го копирах от една руска книга

Sub SortSheets()
Dim astrSheetNames() As String ' Массив для хранения имен листов
Dim intSheetCount As Integer
Dim i As Integer
Dim objActiveSheet As Object
' Если нет активной рабочей книги - закрыть процедуру
If ActiveWorkbook Is Nothing Then Exit Sub
' Проверка защищенности структуры рабочей книги
If ActiveWorkbook.ProtectStructure Then
' Сортировка листов защищенной рабочей книги невозможна
MsgBox "Структура книги " & ActiveWorkbook.Name & " защищена. Сортировка листов невозможна.", vbCritical
Exit Sub
End If
' Сохраняем ссылку на активный лист книги
Set objActiveSheet = ActiveSheet
' Отключение сочетания клавиш Ctrl+Pause Break
Application.EnableCancelKey = xlDisabled
' Отключение обновления экрана
Application.ScreenUpdating = False
intSheetCount = ActiveWorkbook.Sheets.Count
' Заполнение массива astrSheetNames именами листов книги
ReDim astrSheetNames(1 To intSheetCount)
For i = 1 To intSheetCount
astrSheetNames(i) = ActiveWorkbook.Sheets(i).Name
Next i
'Рабочая книга
' Сортировка массива имен в порядке возрастания
Call Sort(astrSheetNames)
' Перемещение листов книги
For i = 1 To intSheetCount
ActiveWorkbook.Sheets(astrSheetNames(i)).Move ActiveWorkbook.Sheets(i)
Next i
' Переход на исходный рабочий лист
objActiveSheet.Activate
' Включение обновления экрана
Application.ScreenUpdating = True
' Включение сочетания клавиш Ctrl+Pause Break
Application.EnableCancelKey = xlInterrupt
End Sub
Sub Sort(astrNames() As String)
' Сортировка массива строк по алфавиту (в порядке возрастания)
Dim i As Integer, j As Integer
Dim strBuffer As String
Dim fBuffer As Boolean
For i = LBound(astrNames) To UBound(astrNames) - 1
For j = i + 1 To UBound(astrNames)
If astrNames(i) > astrNames(j) Then
' Меняем i-й и j-й элементы массива местами
strBuffer = astrNames(i)
astrNames(i) = astrNames(j)
astrNames(j) = strBuffer
End If
Next j
Next i
End Sub


Отговор
в отговор на Cи #5

Re: азбучен ред на sheet

Sub Sort_Worksheets()
Dim i As Integer, j As Integer
For i = 1 To Worksheets.Count
For j = i + 1 To Worksheets.Count
If StrComp(Worksheets(j).Name, Worksheets(i).Name, vbTextCompare) = -1 Then
Worksheets(j).Move before:=Worksheets(i)
End If
Next j
Next i
End Sub


Отговор