2013-12-02 5 views
0

Попытка заставить макрос работать на всех листах в рабочей книге Я хочу, чтобы Скопируйте выделение в отдельное место на том же листе, но вставьте только значения.Excel макрос для работы на всех листах в рабочей книге

Затем сортируйте выбор в новом месте на основе первого столбца.

Это то, что у меня есть

Sub SortALLsheets() 
Dim wsheet As Worksheet 

For Each wsheet In ActiveWorkbook.Worksheets 
Sheets(wsheet.Name).Select 
    Range("AJ4:AK1732").Select 
    Selection.Copy 
    Range("AP4").Select 
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ 
     :=False, Transpose:=False 
    Application.CutCopyMode = False 
    Range("AP4:AQ1732").Select 
    WS.Sort.SortFields.Add Key:=Range("AP4:AP1732"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal 
    With WS.Sort 
     .SetRange Range("AP4:AQ1732") 
     .Header = xlGuess 
     .MatchCase = False 
     .Orientation = xlTopToBottom 
     .SortMethod = xlPinYin 
     .Apply 
    End With 

Next wsheet 

End Sub 

Я получаю ошибку на линии Ws.sort

Вся помощь очень appriciated благодаря Ronald

+0

Какая ошибка возникает у вас? Пожалуйста, уточните – Mike

+0

'WS.SORT' - где размер' WS'? Вы уверены, что это не должно быть 'wsheet.Sort'? –

+1

также обратите внимание, что значения копирования так же просто, как 'Sheets (« SheetWhereYouWantToPasteName »). Диапазон (« A1 ») = Лист (« SheetToGetDataFrom »). Диапазон (« A1 »)' –

ответ

1

Выберите редко требуется в Excel макросов. Попробуйте это обновление.

Sub SortALLsheets() 
Dim wsheet As Worksheet 

For Each wsheet In ActiveWorkbook.Worksheets 
    wsheet.Range("AP4:AQ1732").value=wsheet.Range("AJ4:AK1732").value 
    wsheet.Sort.SortFields.Add Key:=wsheet.Range("AP4:AP1732"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal 
    With wsheet.Sort 
     .SetRange wsheet.Range("AP4:AQ1732") 
     .Header = xlGuess 
     .MatchCase = False 
     .Orientation = xlTopToBottom 
     .SortMethod = xlPinYin 
     .Apply 
    End With 

Next wsheet 

End Sub 
+0

Спасибо - я понял это. – user3058153

+0

+1 хорошо реорганизован – brettdj

Смежные вопросы