Classificando sem selecionar ABA.

Visual Basic for Aplication e macros no Excel.
Regras do fórum
Sua dúvida foi respondida? Marque como RESOLVIDO em seus tópicos, usando o botão com marca verde. Imagem

Classificando sem selecionar ABA.

Mensagempor carlosrgs » Qua Jun 12, 2019 8:28 am

Bom dia a todos.

Ontem estava fazendo uma planilha e usei a macro para classificar dados de uma aba (não ativa, oculta)

Código: Selecionar todos
    ULinha = Sheets("Temp").Cells(Rows.Count, "B").End(xlUp).Offset(1, 0).Row - 1
    Worksheets("Temp").Sort.SortFields.Add Key:=Range("B10:B" & ULinha), _
        SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
        xlSortTextAsNumbers
    With ActiveWorkbook.Worksheets("Temp").Sort
        .SetRange Range("B10:B" & ULinha)
        .Apply
    End With


Hoje quando fui testar, deu erro, e quando fui ver estava com dados duplicados na hora de classificar, estava classificando duas vezes pela coluna B.
Para não ocorrer o erro inclui antes da classificação a macro:

Código: Selecionar todos
'       Eliminando tudo que já classificamos.
    ULinha = Sheets("Temp").Cells(Rows.Count, "B").End(xlUp).Offset(1, 0).Row - 1
    Worksheets("Temp").Sort.SortFields.Clear
    With ActiveWorkbook.Worksheets("Temp").Sort
        .SetRange Range("B10:B" & ULinha)
        .Apply
    End With


Alguém manja uma maneira de fazer sem classificar duas vezes?

No final ficou assim:

Código: Selecionar todos
'       Classificando.
'       Eliminando tudo que já classificamos.
    ULinha = Sheets("Temp").Cells(Rows.Count, "B").End(xlUp).Offset(1, 0).Row - 1
    Worksheets("Temp").Sort.SortFields.Clear
    With ActiveWorkbook.Worksheets("Temp").Sort
        .SetRange Range("B10:B" & ULinha)
        .Apply
    End With

'       Classificando novamente.
    ULinha = Sheets("Temp").Cells(Rows.Count, "B").End(xlUp).Offset(1, 0).Row - 1
    Worksheets("Temp").Sort.SortFields.Add Key:=Range("B10:B" & ULinha), _
        SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
        xlSortTextAsNumbers
    With ActiveWorkbook.Worksheets("Temp").Sort
        .SetRange Range("B10:B" & ULinha)
        .Apply
    End With


Obrigado!
_______________________________________________________________________________________________
Abraço!
Carlos Rafael
* Marque o tópico como Resolvido se foi solucionado seu problema.
Avatar do usuário
carlosrgs
Membro
Membro
 
Mensagens: 721
Registrado em: Qua Abr 15, 2015 1:30 pm
Has thanked: 110 times
Have thanks: 182 times

{ SO_SELECT }

Re: Classificando sem selecionar ABA.

Mensagempor EdsonBR » Qua Jun 12, 2019 9:15 am

Carlos, bom dia.

Sem ter o arquivo pra testar fica mais no chutômetro mesmo, mas vamos tentar:

Se a planilha alvo do seu código não é a planilha ativa, tem que tomar o cuidado de qualificar todos os ranges, inclusive o dos Keys e do SetRange.

Sugestão: use o With Worksheets("Temp") ... End With bem externamente e use o ponto em todos as partes que tem Range.
Imagem
Avatar do usuário
EdsonBR
Membro
Membro
 
Mensagens: 575
Registrado em: Qui Nov 05, 2015 11:43 pm
Localização: Joinville, SC
Has thanked: 116 times
Have thanks: 360 times

Re: Classificando sem selecionar ABA.

Mensagempor edcronos2 » Qua Jun 12, 2019 10:37 am

pode ser questão dos tipos de dados , pelo que vi vc usar texto como numero
não tem muito a ser feito sem ter os dados para testar
Código: Selecionar todos
     With ActiveWorkbook.Worksheets("Temp")
          lf = .Cells(Rows.Count, "B").End(xlUp).Row
          Rango = "B10:B" & lf   '==(monta range de classificação)==
          With .Sort
               .SortFields.Clear
               .SortFields.Add _
                         Key:=Range(Rango), _
                         SortOn:=xlSortOnValues, _
                         Order:=xlAscending, _
                         DataOption:=xlSortTextAsNumbers
               .SetRange Range(Rango)
               .Header = xlGuess
               .MatchCase = False
               .Orientation = xlTopToBottom
               .SortMethod = xlPinYin
               .Apply
          End With
     End With

edcronos2
Membro
Membro
 
Mensagens: 443
Registrado em: Seg Nov 30, 2015 6:59 pm
Has thanked: 29 times
Have thanks: 90 times


Voltar para VBA & Macros

Quem está online

Usuários navegando neste fórum: Google [Bot] e 5 visitantes