Classificar com uma macro

0

Eu tenho uma planilha com 8 colunas de dados. (A linha 1 contém meus cabeçalhos).

Estou tentando gravar uma macro que não preciso editar depois.

Pressiono a macro de registro, realço meus dados, vou para a guia de dados e seleciono sort. Em seguida, procuro classificar os dados em ordem decrescente pelo valor da coluna D. Pressiono a macro de gravação parada.

Quando reproduz essa macro na mesma planilha, ela funciona bem. Quando eu jogo essa macro de volta em uma planilha diferente no mesmo arquivo que é idêntico ao orniginal, nada acontece.

Como posso gravar uma macro para fazer o que eu gostaria sem editar as macros no VBA?

Obrigado pela sua ajuda.

Sub Macro1()
'
' Macro1 Macro
'

'
    Cells.Select
    ActiveWorkbook.Worksheets("Sheet1").Sort.SortFields.Clear
    ActiveWorkbook.Worksheets("Sheet1").Sort.SortFields.Add Key:=Range("D2:D1316" _
        ), SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal
    With ActiveWorkbook.Worksheets("Sheet1").Sort
        .SetRange Range("A1:H1316")
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
End Sub
    
por Joe 05.06.2014 / 15:04

1 resposta

1

Isso classificará da mesma maneira para você.

Basicamente, você usa duas variáveis para definir os dados que você gostaria de classificar e a chave que você está classificando. Então você executa a classificação usando as variáveis. Este é bastante simples, mas deve lhe dar algumas dicas sobre como escrever seu próprio código.

Por exemplo, se você quisesse classificar duas chaves, poderia usar key2 , etc.

Sub Joe()

'Define the variables
Dim rngData As Range
Dim rngKey As Range

'Set the variables
Set rngData = Range("A:H")
Set rngKey = Range("D1")

'Perform the Sort
rngData.Sort key1:=rngKey, order1:=xlDescending, Header:=xlYes

End Sub
    
por 05.06.2014 / 15:57