Logo Hardware.com.br
MARV
MARV Membro Junior Registrado
82 Mensagens 1 Curtida

Macro procedimento muito grande

#1 Por MARV 27/06/2008 - 21:30
Se já tiver este tópico podem apagar, é que eu já procurei e não consegui encontrar nada. Alguém sabe me dizer como faço pra resolver quando a macro dá mensagem de procedimento muito grande?
boslotim
boslotim Tô em todas Registrado
1.4K Mensagens 107 Curtidas
#2 Por boslotim
29/06/2008 - 13:14
Você está usando qual o office?

O meu office 2000 tem destas coisas: não é tudo que pode-se usar... Houve casos de mensagens de erro com macro no 2000, mas que no 2007 funcionava perfeitamente bem...

As vezes no menu suplementos tem-se solução para alguns deste problemas com excel.
Assim, um "sábio" discorda do outro e expoe também suas idéias, que se tornam vagas, se analisadas por um 3º sábio. E isso não tem fim...Muito diferente de toda essa confusão, é o Perfeito pensamento e Palavras de Deus.
MARV
MARV Membro Junior Registrado
82 Mensagens 1 Curtida
#7 Por MARV
10/07/2008 - 18:22
A função é esta:
Range("W3").Select
Selection.Copy
Range("Y3").Select
Selection.PasteSpecial Paste:=xlPasteValue

A questão é que isto tem que ir até (W769) e (Y769), copiando das céluas "W" e colando nas células "Y", e não posso simplificar a função(Range(W3:W769)), por que dá erro, tem uma outra macro nesta tabela que executa uma soma apartir destas células coladas e se colar tudo de uma vez ela dá erro e não executa a soma.
Ainda não sei como se faz mas, quando eu descobrir, passo pra todo mundo. Dores do Turvo-MG.
MARV
MARV Membro Junior Registrado
82 Mensagens 1 Curtida
#10 Por MARV
19/07/2008 - 15:47
Quero agradecer ao Flashcooler e ao boslotim, que tentaram me ajudar mas, acho que não consegui passar de maneira clara o meu problema. Encontrei um post na internet, agradeço Felipe matheus, até é importante que se dê os créditos, pois eu vasculhei a internet e não encontrei nada, a não ser seu post, que desse uma luz sobre o assunto, e olha que encontrei mais pessoas com o mesmo problema e em nenhum lugar encontrei alguém dando como resolvido, por isso ai vai como resolver o problema, de maneira clara para leigo mesmo como eu. Como sou bastante leigo no assunto mesmo com o post que encontrei tive que bater cabeça pra resolver. Então resolvi postar de maneira bem clara. Se você vai colocar um botão em sua planilha com uma macro e esta macro é muito grande ao ponto de dar erro. Você deve primeiramente criar a macro normalmente sem vinculá-la ao botão ainda. Supondo que sua macro seja macro 1 e tenha umas 6.000 linhas, talvez você consiga dividi-la em 4 procedimentos. Então você vai até a linha de número 1500 (existem programas que até dão onde você consegue dividir sem dar erro de tamanho de procedimento mas acho que dá pra ir na base do erro/acerto), escreve nesta linha end sub (que significa que sua macro 1 termina neste ponto). Vai pra próxima linha escreve: sub macro2(), daí automaticamente já vai ser dividida em 2 o seu procedimento. Na próxima linha escreva: call sub macro1() (isto significa que quando você executar a macro 2 além dela executar os seus procedimentos ela também executará os procedimentos da macro 1, daí é só fazer este procedimento quantas vezes for necessário, quando da última divisão você entra com a macro do botão, ou seja, você vai inserir : end sub e logo abaixo: sub botão1_clique() e na próxima linha: call macro 3 (se, como neste caso, estiver dividindo o procedimento em três). Assim quando você acionar o botão 1 ele vai executar todas as macros e não retornará mais erro de tamanho.

EX. Supondo que temos o botão1 executando a macro abaixo e quando acionassemos o botão retornasse a mensagem de procedimento muito grande, então vamos dividi-la em 4 procedimentos:

Sub Botão1_Clique()

Botão1_Clique Macro
Macro gravada em 26/6/2008 por MARV



Range("W3").Select
Selection.Copy
Range("Y3").Select
Selection.PasteSpecial Paste:=xlPasteValues
Range("W4").Select
Selection.Copy
Range("Y4").Select
Selection.PasteSpecial Paste:=xlPasteValues
Range("W5").Select
Selection.Copy
Range("Y5").Select
Selection.PasteSpecial Paste:=xlPasteValues
Range("W6").Select
Selection.Copy
Range("Y6").Select
Selection.PasteSpecial Paste:=xlPasteValues
Range("W7").Select
Selection.Copy
Range("Y7").Select
Selection.PasteSpecial Paste:=xlPasteValues
Range("W8").Select
Selection.Copy
Range("Y8").Select
Selection.PasteSpecial Paste:=xlPasteValues
End Sub

Dividida em 4 procedimentos:

Sub Macro1()

Macro 1 Macro
Macro gravada em 19/7/2008 por MARV



Range("W3").Select
Selection.Copy
Range("Y3").Select
Selection.PasteSpecial Paste:=xlPasteValues
End Sub
_____________________________________________________
Sub Macro2()
Call Macro 1
Range("W4").Select
Selection.Copy
Range("Y4").Select
Selection.PasteSpecial Paste:=xlPasteValues
End Sub
_____________________________________________________
Sub Macro 3()
Call Macro2()
Range("W5").Select
Selection.Copy
Range("Y5").Select
Selection.PasteSpecial Paste:=xlPasteValues
End Sub
_____________________________________________________
Sub Macro 4()
Call Macro3()
Range("W6").Select
Selection.Copy
Range("Y6").Select
Selection.PasteSpecial Paste:=xlPasteValues
End Sub
_____________________________________________________
Sub Botão1_Clique()
Call Macro4
Range("W7").Select
Selection.Copy
Range("Y7").Select
Selection.PasteSpecial Paste:=xlPasteValues
End sub

Assim quando acionado o botão 1 serão executados todos os procedimentos. É importante que você divida no lugar certo sem separar condições. Por exemplo se a macro está copiando e colando você não pode separar na linha em queestá copiando e sim após a linha de colando.
Ainda não sei como se faz mas, quando eu descobrir, passo pra todo mundo. Dores do Turvo-MG.
© 1999-2024 Hardware.com.br. Todos os direitos reservados.
Imagem do Modal