Este fórum está sendo desativado

Depois de 9 anos, este fórum será desativado. Mas calma.... estamos migrando para uma comunidade no DISCORD. Junte-se a nós.

ENTRAR PARA DISCORD

Tópicos relacionados a códigos VBA, gravação de macros, etc.
  • Avatar do usuário
#61261
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
#61263
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!
FJunior agradeceu por isso
#61266
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
FJunior, kiko agradeceu por isso
long long title how many chars? lets see 123 ok more? yes 60

We have created lots of YouTube videos just so you can achieve [...]

Another post test yes yes yes or no, maybe ni? :-/

The best flat phpBB theme around. Period. Fine craftmanship and [...]

Do you need a super MOD? Well here it is. chew on this

All you need is right here. Content tag, SEO, listing, Pizza and spaghetti [...]

Lasagna on me this time ok? I got plenty of cash

this should be fantastic. but what about links,images, bbcodes etc etc? [...]

Estamos migrando para uma comunidade no Discord