Народ, помогите, плиз. Данная тема вполне себе работает
Код
Sub asf()
ActiveSheet.Range("h8:h37").Sort Key1:=Range("h8:h37").Cells(1), _
Order1:=xlDescending, Type:=xlSortValues, OrderCustom:=1, Orientation:=xlTopToBottom
End Sub
Однако когда пытаюсь написать вот в таком виде, выдает ошибку
Код
Sub test()
'Dim qwe1 As Range, qwe2 As Range, qwe3 As Range
Set qwe1 = ActiveSheet.Range("b7:k7").Find("Total", lookat:=xlPart)
Set qwe2 = qwe1.Offset(1, 0)
Set qwe3 = Range(Cells(qwe2.Row, qwe2.Column), Cells(qwe2.Row + 29, qwe2.Column))
ActiveSheet.Range("qwe3").Sort Key1:=Range("qwe3").Cells(1), _
Order1:=xlDescending, Type:=xlSortValues, OrderCustom:=1, Orientation:=xlTopToBottom
End Sub
Блин, что не так делаю?
UPD извиняюсь, что файл не прикладываю, он рабочий. А вопроизвести его муторно: таблица, которую я сортирую, сводная, и я пытаюсь сделать сортировку по столбцу итого (там нельзя сделать autosort, потому что в поле values очень много величин... в общем, есть причины)).
На вскидку. Зачем у Вас там столько промежуточных диапазонов? Которые Вы к тому-же неправильно применяете. Не надо вставлять этот диапазон в еще один Range, зто не ИМЯ диапазона. Может так будет достаточно. Проверить не на чем
Код
Sub test()
Dim rngTotal As Range
With ActiveSheet.Range("b7:k7").Find("Total", lookat:=xlPart)
rwTotal = .Offset(1, 0).Row
clTotal = .Column
End With
With ActiveSheet
Set rngTotal = .Range(.Cells(rwTotal, clTotal), .Cells(rwTotal + 29, clTotal))
End With
rngTotal.Sort Key1:=rngTotal.Cells(1), Order1:=xlDescending, _
Type:=xlSortValues, OrderCustom:=1, Orientation:=xlTopToBottom
End Sub
Sanja, спасибо большое за код. Приложил пример, очень похожий на рабочий файл. Код работает отлично, но если я пытаюсь его привязать к worksheet_change, эксель ломается... либо ошибку выдает. Я опять что-то не так делаю, или это эксель у меня глючит? (подозреваю, что первое))test_qwerty.xlsm(36.02 КБ)