Notifications
Clear all

[Resolvido] MACRO - Erro inexplicável

7 Posts
2 Usuários
2 Reactions
958 Visualizações
JSCOPA10
(@jscopa10)
Posts: 344
Reputable Member
Topic starter
 

Alguém explica isto?? a primeira Macro funciona perfeitamente ... a segunda dá erro na linha "Apply" lá no final(???????)!!!!!!!!!!

Sub Classificar_3()
  Dim rgDados As Range: Set rgDados = ActiveSheet.[A2:M6000]
  With rgDados.Worksheet.Sort
    With .SortFields
      .Clear
      .Add Key:=rgDados.Columns("I"), Order:=xlAscending
      .Add Key:=rgDados.Columns("A"), Order:=xlAscending
      .Add Key:=rgDados.Columns("C"), Order:=xlAscending
      .Add Key:=rgDados.Columns("D"), Order:=xlAscending
      '.Add Key:=rgDados.Columns("B"), Order:=xlAscending
    End With
    .SetRange rgDados
    .Header = xlYes
    .Apply
  End With
  MsgBox "Parabens. Tudo Classificado Corretamente!", vbInformation, "Parabéns"
  Range("A3").Select
End Sub

 

Sub Classificar_8()
  Dim rgDados As Range: Set rgDados = ActiveSheet.[AD2:AP6000]
  With rgDados.Worksheet.Sort
    With .SortFields
      .Clear
      .Add Key:=rgDados.Columns("AL"), Order:=xlAscending
      .Add Key:=rgDados.Columns("AD"), Order:=xlAscending
      .Add Key:=rgDados.Columns("AF"), Order:=xlAscending
      .Add Key:=rgDados.Columns("AG"), Order:=xlAscending
      '.Add Key:=rgDados.Columns("B"), Order:=xlAscending
    End With
    .SetRange rgDados
    .Header = xlYes
    .Apply
  End With
  MsgBox "Parabens. Tudo Classificado Corretamente!", vbInformation, "Parabéns"
  Range("AL3").Select
End Sub
 
Postado : 19/02/2022 10:58 pm
JSCOPA10
(@jscopa10)
Posts: 344
Reputable Member
Topic starter
 

EdsonBR, tenho quase certeza que foi vc que me deu essa Macro!!! ... Agora dê uma luz aí sobre esse erro!! k

Para montar a segunda Macro, só copiei e colei e alterei o intervalo e as células!!!! ... A primeira funciona, e a segunda não!!! ... Vai entender!!!!

Este post foi modificado 3 anos atrás por JSCOPA10
 
Postado : 19/02/2022 11:08 pm
EdsonBR
(@edsonbr)
Posts: 1057
Noble Member
 

Boa noite, parça!

@JSCOPA, atente para o fato, por exemplo, que a referência:

rgDados.Columns("AL")

NÃO se refere à coluna AL da planilha e sim à sub-coluna AL do range rgDados, partindo sempre da esquerda pra direita, a primeira coluna do range sendo a A, a segunda a B, e assim por diante.

Portanto, nessa referência acima, a coluna AL desse seu range na verdade apontará para a coluna BO da planilha, portanto fora do range, por isso dá erro.

No seu caso então AL corresponde à coluna I do range, AD à coluna A, AF à coluna C e AG à coluna D exatamente igual à primeira macro.

Na verdade então, como vc vê, nem precisaria ter mudado essas referências, apenas a referência do Range inicial já é suficiente:

Set rgDados = ActiveSheet.[AD2:AP6000]

 

 

 
Postado : 20/02/2022 12:23 am
JSCOPA10
(@jscopa10)
Posts: 344
Reputable Member
Topic starter
 

@edsonbr, muito grato pela resposta!! ... Mas como defino a classificação por colunas?? ... Se eu não disser que o primeiro critério é a coluna AL, o segundo é .......... etc etc ... como a Macro vai saber??

 
Postado : 20/02/2022 12:28 am
JSCOPA10
(@jscopa10)
Posts: 344
Reputable Member
Topic starter
 
Postado por: @edsonbr

No seu caso então AL corresponde à coluna I do range, AD à coluna A, AF à coluna C e AG à coluna D exatamente igual à primeira macro.

Que loucura (???))!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! .... Testei aqui e funcionou!!!!!!!!!!!! ..... EdsonBR, MUITOOOO OBRIGADO, SHOW!!!!!!!!!!!!!!!!!!!

 
Postado : 20/02/2022 12:36 am
EdsonBR
(@edsonbr)
Posts: 1057
Noble Member
 
 
Postado por: @jscopa10

... Se eu não disser que o primeiro critério é a coluna AL, o segundo é .......... etc etc ... como a Macro vai saber??

Como disse anteriormente: pela posição relativa e não pela absoluta. Como vc já definiu o range, considere esse range como uma mini-planilha com suas colunas A, B, C, ... etc.

Ah, ao invés de letras vc também pode usar números para definir as colunas. Por exemplo, ao invés de:

rgDados.Columns("C")

Vc também pode usar:

rgDados.Columns(3)

Que designaria a 3ª coluna do range. Note que não tem aspas.

 
Postado : 20/02/2022 12:46 am
JSCOPA10 reacted
JSCOPA10
(@jscopa10)
Posts: 344
Reputable Member
Topic starter
 

@edsonbr, só para esclarecer, é que no meu Trabalho trocaram o Oracle Discoverer, pelo BI/MetaBase, e agora estou tendo que adaptar todos os meus arquivos de conferências, estatísticas etc etc etc!!!

Mas, como disse acima, sua resposta me SALVOU!! ... Muito obrigado!! ... Valeu!!!

 
Postado : 20/02/2022 1:13 am
EdsonBR reacted