Página 1 de 1

Macro para classificar dezenas em ordem crescente

Enviado: 30 Dez 2020 às 02:36
por FJunior
Boa noite. Estou utilizando uma macro para classificar em ordem crescente as dezenas da Mega-Sena em uma planilha. As dezenas ficam no intervalo "L5:U84", sendo cada cartela da loteria em uma linha deste intervalo. O problema é que quando chamo a macro, ela vai ordenando corretamente linha a linha, mas ela não finaliza na última linha "L84:U84", ela continua na linha "L85:U85" e logo em seguida apresenta esta mensagem de erro (Erro em tempo de execução '1004': Para você fazer isto, todas as células mescladas precisam ser do mesmo tamanho.) já que as células "L85 e M85" estão mescladas. Gostaria de uma ajuda para que a macro ordenasse linha a linha do intervalo "L5:U84" e parasse quando chegar na última linha "L84:U84", retornando o cursor para a célula "L5". Agradeço se alguém puder me ajudar.

Sub Classificar_Dezenas_Ordem_Crescente()
'
' Ordenar_Dezenas_Ordem_Crescente Macro
'

'
Application.ScreenUpdating = False
Application.EnableEvents = False

Dim W As Worksheet
Dim UltCel As Range
Dim Linha As Long

Set W = Sheets("Bolão")

W.Select

Set UltCel = W.Range("L84").Range("U5")

W.Range("L5").Select

Do While ActiveCell.Row <= UltCel.Row

Linha = ActiveCell.Row

W.Range("L" & Linha & ":U" & Linha).Select
W.Sort.SortFields.Clear
W.Sort.SortFields.Add Key:=W.Range("L" & Linha & ":U" & Linha), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With W.Sort
.SetRange W.Range("L" & Linha & ":U" & Linha)
.Header = xlGuess
.MatchCase = False
.Orientation = xlLeftToRight
.SortMethod = xlPinYin
.Apply

End With

ActiveCell.Offset(1, 0).Select

Loop

MsgBox "Operação Realizada com Sucesso!"

Application.ScreenUpdating = True
Application.EnableEvents = True

End Sub

Re: Macro para classificar dezenas em ordem crescente

Enviado: 30 Dez 2020 às 09:32
por wesleyribeiro123
Amigo
Bom dia,

Sem ver a planilha é um pouco difícil de compreender bem o problema, mas pelo que entendi a tua dificuldade se dá por ter definido a variável UltCel.
Pelo que pude perceber se a tua linha sempre será a 84 porque não fixa este valor no código?
Código: Selecionar todos
Sub Classificar_Dezenas_Ordem_Crescente()
'
' Ordenar_Dezenas_Ordem_Crescente Macro
'

'
Application.ScreenUpdating = False
Application.EnableEvents = False

Dim W As Worksheet
'Dim UltCel As Range
Dim Linha As Long

Set W = Sheets("Bolão")

W.Select

'Set UltCel = W.Range("L84").Range("U5")

W.Range("L5").Select

Do While ActiveCell.Row <= 84 'UltCel.Row

Linha = ActiveCell.Row

W.Range("L" & Linha & ":U" & Linha).Select
W.Sort.SortFields.Clear
W.Sort.SortFields.Add Key:=W.Range("L" & Linha & ":U" & Linha), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With W.Sort
.SetRange W.Range("L" & Linha & ":U" & Linha)
.Header = xlGuess
.MatchCase = False
.Orientation = xlLeftToRight
.SortMethod = xlPinYin
.Apply

End With

ActiveCell.Offset(1, 0).Select

Loop

MsgBox "Operação Realizada com Sucesso!"

Application.ScreenUpdating = True
Application.EnableEvents = True

End Sub
Por favor, veja se desta forma resolvemos o teu problema!

Re: Macro para classificar dezenas em ordem crescente

Enviado: 30 Dez 2020 às 10:17
por osvaldomp
Experimente:
Código: Selecionar todos
Sub OrdenaLinhas()
 Dim k As Long
  For k = 5 To 84
   Cells(k, "L").Resize(, 10).Sort Key1:=Cells(k, 1), Order1:=xlAscending, Orientation:=xlLeftToRight
  Next k
End Sub

Re: Macro para classificar dezenas em ordem crescente

Enviado: 31 Dez 2020 às 01:07
por FJunior
Boa noite.
Wesley era exatamente isso que eu precisava, funcionou perfeitamente! Obrigado