Сортировка из Workbook_BeforeClose

Программирование на Visual Basic for Applications
M@SKIT
Новичок
Новичок
 
Сообщения: 42
Зарегистрирован: 10.04.2006 (Пн) 11:10
Откуда: Одесса

Сортировка из Workbook_BeforeClose

Сообщение M@SKIT » 15.01.2007 (Пн) 18:31

Вопрос по сортировке: цель - произвести сортировку на некоторой странице при закрытии файла. Есть следующий фрагмент кода:

Код: Выделить всё
Sub sortirovka()
Dim M As Integer
Dim i As Integer
Dim OPJ As String

M = 0
Do
OPJ = Sheets("page").Cells(5 + M, 1)
M = M + 1
Loop Until OPJ = ""
M = M - 1

Rows("5:" & CStr(M + (5 - 1))).Select
   
    Selection.Sort Key1:=Range("B5"), Order1:=xlAscending, Key2:=Range("AR5") _
        , Order2:=xlAscending, Header:=xlGuess, OrderCustom:=1, MatchCase:= _
        False, Orientation:=xlTopToBottom, DataOption1:=xlSortNormal, DataOption2 _
        :=xlSortNormal
M = 0
i = 1
Do
OPJ = Sheets("page").Cells(5 + M, 1)
If OPJ = "" Then
GoTo M1
Else
Sheets("page").Cells(5 + M, 1) = i
M = M + 1
End If
i = i + 1
Loop Until OPJ = ""

M1:

End Sub


Прекрасно работает из листа на котором должна происходить сортировка, для общего случая переписываю так:

Код: Выделить всё
sheets("page").Range("A5:AR5" & CStr(M + (5 - 1))).Sort Key1:=Range("B5"), Order1:=xlAscending, Key2:=Range("AR5") _
        , Order2:=xlAscending, Header:=xlGuess, OrderCustom:=1, MatchCase:= _
        False, Orientation:=xlTopToBottom, DataOption1:=xlSortNormal, DataOption2 _
        :=xlSortNormal


Теперь уже выделяем не строки а диапазон ячеек - для меня это не критично.
опять же при запуске с сортируемого листа работает, при запуске того же кода с другого листа или из woorkbook получаем:

"ошибка 1004 Не допустимая ссылка для сортировки..."

Расскажите пожалуйста в чем моя ошибка!

Avtopic
Постоялец
Постоялец
 
Сообщения: 442
Зарегистрирован: 30.09.2005 (Пт) 17:15
Откуда: Tbilisi

Сообщение Avtopic » 15.01.2007 (Пн) 18:42

не берусь утверждать, так как в этот момент у меня своих проблем хватает :) , но что сразу приходит в голову,
перед каждым Range, ставить sheets("page").

M@SKIT
Новичок
Новичок
 
Сообщения: 42
Зарегистрирован: 10.04.2006 (Пн) 11:10
Откуда: Одесса

Сообщение M@SKIT » 15.01.2007 (Пн) 18:57

Спасибо Avtopic за мысль, извините никогда сортировками не занимался да и пора наверное домой с работы идти, короче сделал так:

Код: Выделить всё
With Sheets("page").Range("A5:AR5" + CStr(M))
    .Sort Key1:=.Range("B5"), Order1:=xlAscending, Key2:=.Range("AR5") _
        , Order2:=xlAscending, Header:=xlGuess, OrderCustom:=1, MatchCase:= _
        False, Orientation:=xlTopToBottom, DataOption1:=xlSortNormal, DataOption2 _
        :=xlSortNormal
        End With


все OK!


Вернуться в VBA

Кто сейчас на конференции

Сейчас этот форум просматривают: Google-бот и гости: 106

    TopList