Ir ao conteúdo

Posts recomendados

Postado

Meus amigos, bom dia. Lembro que o @CasaDoHardware e o @Patropi me ajudaram em códigos semelhantes em VBA e até me ensinaram a utilizar o gravador de macros, mas, agora, estou tendo problemas com um código que deve ser simples para vocês.

Tenho uma tabela com colunas de A a H e linhas a serem preenchidas pelos usuários. Gostaria que o código selecionasse de A a H de todas as linhas preenchidas, a fim de organizar em ordem crescente/decrescente os dados das colunas G e H. Para tanto, faria 4 macros diferentes e remeteria a quatro botões diferentes, mas, ao gravar a macro, observei que o código só seleciona a última linha que estava preenchida no momento da gravação, e, se mais alguma é adicionada, ele já não funciona mais. Alguma luz? Segue a macro gravada:

-------------------------------------------------------------------------------------------------------------------------

Linha 1 Sub PrzAZ()
Linha 2 '
Linha 3 ' PrzAZ Macro
Linha 4 '

Linha 5 '
Linha 6     ActiveSheet.Unprotect
Linha 7     Range("A5").Select
Linha 8     Range(Selection, Selection.End(xlToRight)).Select
Linha 9     Range(Selection, Selection.End(xlDown)).Select
Linha 10     ActiveWorkbook.Worksheets("Procedimentos").Sort.SortFields.Clear
Linha 11     ActiveWorkbook.Worksheets("Procedimentos").Sort.SortFields.Add Key:=Range( _
Linha 12         "G5:G9"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
Linha 13         xlSortNormal
Linha 14     With ActiveWorkbook.Worksheets("Procedimentos").Sort
Linha 15         .SetRange Range("A4:H9")
Linha 16         .Header = xlYes
Linha 17         .MatchCase = False
Linha 18         .Orientation = xlTopToBottom
Linha 19         .SortMethod = xlPinYin
Linha 20         .Apply
Linha 21     End With
Linha 22     Range("A5").Select
Linha 23     ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True _
Linha 24         , AllowSorting:=True, AllowFiltering:=True
Linha 25 End Sub

-------------------------------------------------------------------------------------------------------------------------

Sei que o erro se encontra no que está de negrito, mas não faço ideia de como consertar. Alguma ideia, lembrando que o que quero é que o código procure a última linha com dados preenchidos?

Em um dos códigos que o @CasaDoHardware me mandou, havia essa linha aqui "WP.Range(Selection, Selection.End(xlDown)).Select". Tentei utilizar, até acertei em fazer adaptação para selecionar a última linha, mas não consegui fazer a adaptação para as linhas 11 e 15.

  • Membro VIP
Postado

Boa noite Nortonap

 

Um exemplo de macro classificando pela coluna A

Sub PrzAZ()
Dim LR As Long
With ActiveSheet
    .Sort.SortFields.Clear
    .Sort.SortFields.Add Key:=Range("A5"), _
    SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
    LR = .Cells(Rows.Count, 1).End(xlUp).Row
End With

With ActiveSheet.Sort
    .SetRange Range("A5:H" & LR)
    .Header = xlNo
    .MatchCase = False
    .Orientation = xlTopToBottom
    .SortMethod = xlPinYin
    .Apply
End With
End Sub

Feliz 2017!

 

[]s

  • Curtir 1
Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...