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
Avatar do usuário
Por LeoHenrique
Posts Avatar
#61099
Boa tarde a todos !

Segue em anexo, o modelo que estou tentando acertar....
A macro coloca em ordem decrescente a base 1, porém quando substituo os valores da base 1 pela base 2, a macro não considera todas as linhas, apenas até a linha do cliente "número" 20. Alguém pode ajudar ?

Obrigado desde já.
Você não está autorizado a ver ou baixar esse anexo.
Por osvaldomp
#61100
Experimente:
Código: Selecionar todos
Sub OrdenaDados()
 Dim LR As Long
  LR = Cells(Rows.Count, 4).End(3).Row
  With ActiveSheet.Sort
   .SortFields.Clear
   .SortFields.Add2 Key:=Range("I6:I" & LR), SortOn:=xlSortOnValues, Order:=xlDescending
   .SortFields.Add2 Key:=Range("H6:H" & LR), SortOn:=xlSortOnValues, Order:=xlDescending
   .SortFields.Add2 Key:=Range("G6:G" & LR), SortOn:=xlSortOnValues, Order:=xlDescending
   .SortFields.Add2 Key:=Range("F6:F" & LR), SortOn:=xlSortOnValues, Order:=xlDescending
   .SortFields.Add2 Key:=Range("E6:E" & LR), SortOn:=xlSortOnValues, Order:=xlDescending
   .SetRange Range("D6:I" & LR)
   .Header = xlNo
   .MatchCase = False
   .Orientation = xlTopToBottom
   .SortMethod = xlPinYin
   .Apply
  End With
End Sub
LeoHenrique agradeceu por isso
Avatar do usuário
Por LeoHenrique
Posts Avatar
#61109
Muito obrigado novamente Osvaldo !! Sempre trazendo códigos funcionais !!!
Top demais !!!
Se você montar um curso de fórmulas avançadas em VBA eu compraria na hora!!!
Abraço
osvaldomp agradeceu por isso
Avatar do usuário
Por LeoHenrique
Posts Avatar
#61122
Boa tarde Osvaldo !

Poderia por favor, para meu aprendizado me explicar a linha abaixo ? Pela lógica localizei que o número 4 refere-se á coluna 4, mas por que após o "End" há o número "3" ?

LR = Cells(Rows.Count, 4).End(3).Row
Por osvaldomp
#61123
LR = Cells(Rows.Count, 4).End(3).Row

Isso mesmo, o comando acima busca a última linha com conteúdo na coluna D, e o número daquela linha é atribuído à variável LR (Last Row). Eu optei pela coluna D mas poderia ser em qualquer outra no intervalo D:I.

A expressão Cells(Rows.Count, 4) ou Cells(Rows.Count, "D") ~~~> equivale no XL 2003 a selecionar a célula D65536 e a partir do XL 2007 a célula D1048576, ou seja, Rows.Count funciona nas duas versões e por isso é mais consistente do que utilizar o número da última linha da planilha.

Daí, a partir daquela célula, a expressão End(3) ou End(xlUp) corresponde a apertar a tecla End seguida da setinha para cima.

As equivalências simplificadas abaixo foram sugeridas por um estagiário da MS : :)
(xlToLeft) ~~~> formada por 8 caracteres, pode também ser escrita como (1) ~~~> formada por apenas 1 carácter
(xlToRight) ~~~> pode ser também (2)
(xlUp) ~~~> pode ser também (3)
(xlDown) ~~~> pode ser também (4)
LeoHenrique 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