Приветствую уважаемое сообщество!
Что-то я сильно затупил, но не могу понять, где у меня ошибка вот в этом куске кода:
[vba]Код
Dim sht As Worksheet
ufTimerSelect.Show
For Each sht In ThisWorkbook.Sheets
sht.Activate
Range("A5:X5").Select
Selection.AutoFilter
ActiveWorkbook.Worksheets(sht).AutoFilter.Sort.SortFields.Clear
[/vba]
После запуска выскакивает окно с ошибкой:
Цитата
Run-time error '13':
Type mismatch
Пробовал и вот так эту строку записать:
[vba]Код
sht.AutoFilter.Sort.SortFields.Clear
[/vba]
Всё равно ошибку выдаёт.
Что-то в орфографии VBA у меня хромает или где?
Вот полный текст VBA:
[vba]Код
Sub Slaid()
Dim p As Integer
Dim m As String
Dim sht As Worksheet
Dim s As String
ufTimerSelect.Show
Begin:
For Each sht In ThisWorkbook.Sheets
Debug.Print sht.Name
sht.Activate
Range("A5:X5").Select
Selection.AutoFilter
ActiveWorkbook.Worksheets(sht.Name).AutoFilter.Sort.SortFields.Clear
ActiveWorkbook.Worksheets(sht.Name).AutoFilter.Sort.SortFields.Add Key:=Range("X5"), _
SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortTextAsNumbers
With sht.AutoFilter.Sort
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
Application.Wait Time:=Now + TimeValue("0:00:05")
Next sht
GoTo Begin
End Sub
[/vba]
А выполнять он должен совсем простую задачу:
вывести на экран Лист1 на экран, сортируя при этом столбец X по убыванию;
после паузы вывести на экран Лист2 с аналогичными действиями;
и так далее со всеми листами книги, сколько бы их ни было;
после последнего выведенного листа снова выводится Лист1.
Всё это продолжается до нажатия на любом листе кнопки "Стоп" (ещё не сделана).
Что там будет выполняться в листах — это позже будет сделано.
Добавил файл.