Notifications
Clear all

Erro ao selecionar vários ranges

5 Posts
2 Usuários
0 Reactions
1,390 Visualizações
(@fefo32br)
Posts: 44
Eminent Member
Topic starter
 

Pessoal, boa tarde!

Pergunta simples.

Como fazer uma macro que selecione vários intervalos sem que eu tenha o erro 1004 - o método range do objeto global falhou

Por exemplo:

Sub Macro9()

    Range("AN7:AN10,BP7:BP10,CR7:CR10,EA7:EA10,FC7:FC10,GE7:GE10,HN7:HN10,IP7:IP10,JR7:JR10,LA7:LA10,MC7:MC10,NL7:NL10,ON7:ON10,PP7:PP10").Select
    
End Sub

Isso é apenas uma amostra... a seleção real que preciso é BEM maior que essa, mas acredito que a solução seja a mesma para ambos os casos, certo?

Desde já, obrigado!

Abs

 
Postado : 23/08/2018 11:59 am
xlarruda
(@xlarruda)
Posts: 732
Honorable Member
 

Acredito que assim seja mais fácil de visualizar e até de editar os intervalos se necessário:

Sub Selecionar()
Dim myrange As Range
Set rg1 = Plan1.Range("AN7:AN10"): Set rg2 = Plan1.Range("BP7:BP10")
Set rg3 = Plan1.Range("CR7:CR10"): Set rg4 = Plan1.Range("EA7:EA10")
Set rg5 = Plan1.Range("FC7:FC10"): Set rg6 = Plan1.Range("GE7:GE10")
Set rg7 = Plan1.Range("HN7:HN10"): Set rg8 = Plan1.Range("IP7:IP10")
Set rg9 = Plan1.Range("JR7:JR10"): Set rg10 = Plan1.Range("LA7:LA10")
Set rg11 = Plan1.Range("MC7:MC10"): Set rg12 = Plan1.Range("NL7:NL10")
Set rg13 = Plan1.Range("ON7:ON10"): Set rg14 = Plan1.Range("PP7:PP10")

Set myrange = Union(rg1, rg2, rg3, rg4, rg5, rg6, rg7, rg8, rg9, rg10, rg11, rg12, rg13, rg14)

myrange.Select

End Sub

Ou assim tbm:

Sub Selecionar()
Dim Myrange As Range
Set Myrange = Union([AN7:AN10], [BP7:BP10], [CR7:CR10], [EA7:EA10], [FC7:FC10], [GE7:GE10], [HN7:HN10], [IP7:IP10], [JR7:JR10], [LA7:LA10], [MC7:MC10], [NL7:NL10], [ON7:ON10], [PP7:PP10])
Myrange.Select
End Sub

___________________________________________________________________________________________
Se a resposta atendeu sua dúvida, por favor, clique no Gostei e marque o Tópico como [Resolvido].

Att.

André Arruda

 
Postado : 23/08/2018 12:15 pm
(@fefo32br)
Posts: 44
Eminent Member
Topic starter
 

olá!

Infelizmente está dado erro...

1004 - o método select da classe range falhou

 
Postado : 23/08/2018 12:24 pm
xlarruda
(@xlarruda)
Posts: 732
Honorable Member
 

Colega fefo32br, o método Union só aceita 30 ranges dentro. Se precisar inserir mais de 30 deverá inserir uma Union dentro da outra:

por exemplo:

Union(Union(rg1,rg2,rg3,rg4,rg5,rg6,rg7,rg8,rg9,rg10,rg11,rg12,rg13,rg14,rg15,rg16,rg17,rg218,rg19,rg20,rg21,rg22,rg23,rg24,rg25,rg26,rg27,rg28,rg29,rg30),rg31,rg32,rg33,rg34,rg35...... e por ai vai....)

Repara que no rg30 eu fechei parenteses. Na sequencia inserir mais um Union e continuei.. Nesse caso, esse segundo union me permite me colocar mais 29 ranges (pois seu argumento 1 já está sendo usado pelas 30 primeiras ranges do primeiro Union). se precisar inserir mais, crie mais uma Union seguindo a mesma lógica.

___________________________________________________________________________________________
Se a resposta atendeu sua dúvida, por favor, clique no Gostei e marque o Tópico como [Resolvido].

Att.

André Arruda

 
Postado : 23/08/2018 12:32 pm
(@fefo32br)
Posts: 44
Eminent Member
Topic starter
 

André, MUITO OBRIGADO!

abs!

 
Postado : 23/08/2018 12:49 pm