Процедура сортировки должна применяться к нескольким рабочим листам с различным содержанием.Поэтому я выбрал решение "для каждого sh в листах ...".Эта процедура сортировки отлично работает для первого выбранного листа.На втором листе в команде «Применить» отображается сообщение «Ошибка времени выполнения 1004 Ссылка на сортировку недопустима», несмотря на то, что разные переменные отображают правильные значения.Ссылаясь на « '1004':« Ссылка на сортировку недопустима. »», я изменил «С sh.Sort» на «С sh.Range (startcell, lastcell) .Sort», что приводит к ошибкеMsgstr "Невозможно получить свойство сортировки класса диапазона".Может ли участник форума помочь мне решить эту проблему?Заранее спасибо
Эта процедура сортировки выполняется на первом листе, но не на остальных.
Sub sortData()
Dim startcell As Range, lastcell As Range
Dim sh As Worksheet
Dim x_Birth As Long, lastcell_Birth As Long
For Each sh In Worksheets
With sh
If Left(sh.Name, 2) = "B_" Then
.Columns(5).Insert
.Cells(1, 5) = "Y_Birth"
lastcell_Birth = sh.Cells(Rows.count, "A").End(xlUp).Row
For x_Birth = 2 To lastcell_Birth
.Cells(x_Birth, 5) = Right(.Cells(x_Birth, 4), 4)
Next
Set startcell = Range(.Cells(1, 1), .Cells(1, 1))
Set lastcell = Range(.Cells(lastcell_Birth, 7), .Cells(lastcell_Birth, 7))
With sh.Sort
.SortFields.Add Key:=sh.Range("F1"), Order:=xlAscending
.SortFields.Add Key:=sh.Range("E1"), Order:=xlAscending
.SetRange Range(startcell, lastcell)
.Header = xlYes
.Apply
End With
sh.Columns("E:E").Select
Selection.Columns.EntireColumn.Delete
End If
End With
Next
End Sub