Notifications
Clear all

Erro na macro! Nao consigo resolver

8 Posts
4 Usuários
0 Reactions
2,613 Visualizações
(@digo203)
Posts: 117
Estimable Member
Topic starter
 

Senhores boa tarde!

Por favor, me ajudem a resolver este erro;

O método range do objeto global falhou

Esse erro da nesse codigo

Sheets("ANBP064C").Select
Range("A7:H7,A17:H17,A27:H27,A37:H37,A47:H47,A57:H57,A67:H67,A77:H77,A87:H87,A97:H97,A107:H107,A117:H117,A127:H127,A137:H137,A147:H147,A157:H157,A167:H167,A177:H177,A187:H187,A197:H197,A207:H207,A217:H217,A227:H227,A237:H237,A247:H247,A257:H257,A267:H267,A277:H277").Select
Range("A277").Activate
Application.CutCopyMode = False
Selection.Copy
Sheets("Plan1").Select
Range("B1").Select
ActiveSheet.Paste

Quando eru excluo a linha (A277:H277) deixando até o (A267:H267) a macro roda de boa, porem eu preciso pegar os dados até no minimo A527:H527 e nao consigo de forma alguma

 
Postado : 29/01/2014 1:16 pm
(@gtsalikis)
Posts: 2373
Noble Member
 

mas... o que vc pretende fazer?

Lembre-se de AGRADECER aos que te ajudaram, e de marcar o tópico como [Resolvido]
Gente que cuida de gente.

Gilmar

 
Postado : 29/01/2014 1:27 pm
(@digo203)
Posts: 117
Estimable Member
Topic starter
 

mas... o que vc pretende fazer?

Olá gtsalikis.

Estou copiando dados de uma planilha em que um codigo VBA transforma um arquivo txt em um excel ja na formatação que eu desejo.

Como a quebra fica em varias linhas, esse codigo vai linha por linha copiando e depois cola em outro lugar.

Segue o exemplo em anexo:

 
Postado : 29/01/2014 1:39 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Este pedaço da pergunta, eu faria assim:

Sub teste()
Dim rng As Excel.Range
Dim cnt As Long

    Set rng = Range("A7:H7")
    cnt = 7
    Do While cnt < 600
        Set rng = Application.Union(rng, Range("A" & cnt & ":H" & cnt))
        cnt = cnt + 10
    Loop
    rng.Copy Sheets("Plan1").Range("B1")

End Sub

mas agora que vi seu código todo, teria mais coisas pra mexer ali...

eu nao indico nunca que se use o Range() com diversos endereços dentro, por agumas razoes (experience is a bitch):
1) eu ja presenciei *paus inexplicáveis ao se usar o Range com muitos endereços dentro, e bastou separar q tudo funcionou
2) acredito haver um limite para qtas células pode escrever ali, e vc nunca sabe o tamanho do seu TXT, e por isso precisará sempre ficar reeditando, ou pegando muito mais intervalos de que precisa...

eu faria como fiz acima, cada pedaço que vc tem q copiar, eu estou *acumulando as células no objeto rng, e depois copiando tudo de uma vez e colando na outra planilha.... aproveite a ideia "

abraço

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 29/01/2014 1:50 pm
(@digo203)
Posts: 117
Estimable Member
Topic starter
 

Ola amigo fernando.

Obrigado pela ajuda.
Nossa, vc me ajudou muito.
Como vc pode ver, eu fiz mesmo essa macro no metodo mais basico Gravaçao de Macros, pq eu nao manjo nada de codigos VBA. Por isso tem um monte de linhas com Range e um monte de tranqueira que com certeza pode ser excluida do codigo.
Fiz mesmo pq tenho que pegar linha a linha de um txt gigante, ai nao rola.

Mas aproveitando a sua dica, pode me responder a uma outra duvida?

Se eu quiser fazer o mesmo com as demais linhas que contem o Range com varias linhas eu consigo com o mesmo codigo?

Fui tentar fazer, mas deu erro de duplicidade!!!!!! :?

No codigo que contem apenas uma coluna (A1, A11, A21 e etc)) é possivel fazer o mesmo????

Desde ja agradeço.

 
Postado : 29/01/2014 5:11 pm
(@spfccaros)
Posts: 27
Eminent Member
 

Como vc fez para selecionar as outras celulas, vc criou um dim Rng2 as range ou colocou no mesmo

 
Postado : 29/01/2014 10:15 pm
(@digo203)
Posts: 117
Estimable Member
Topic starter
 

Tentei das duas formas, colocar as outras celulas no mesmo codigo e a outra foi usando varias vezes o mesmo codigo.

Como nao manjo nada de codigos VBA as duas deram erro.

 
Postado : 30/01/2014 5:28 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

sim é possível fazer o mesmo...
vc precisa declarar qtos rng vc quiser, mudando os nomes, e usá-los da mesma forma...

Sabe aquele 600 que eu coloquei no código? vc pode usar

Sheets("ANBP064C").usedrange.rows.count

daí ele passa em todas as linhas do TXT...

claro que para pegar outros dados, precisa mudar o que coloca dentro do union... mas tem q funfar... erro de duplicidade achei estranho
vc pode usar
dim rng1 as range
dim rng2 as range
dim rng3 as range

nao pode usar dim com o mesmo nome pq vai dar declaração duplicada no escopo...

abs

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 30/01/2014 11:19 am