Logo Hardware.com.br
Intruder18
Intruder18 Novo Membro Registrado
26 Mensagens 2 Curtidas

[Resolvido] VBA Excel Colar Valores

#1 Por Intruder18 27/09/2015 - 19:10
Boa Noite Amigos.
Preciso de uma ajudinha em vba. Talvez seja coisa simples, mas já tentei de tudo e não consigo desenvolver.

É o seguinte, eu preciso copiar o valor de Plan1 A1 e colar valores em Plan2 A1, mas sem precisar selecionar a sheet Plan2.

Consigo fazer dessa forma:

Sub Copiar()
Dim wsOrigem As Worksheet
Dim wsDestino As Worksheet

Set wsOrigem = Worksheet("Plan1")
Set wsDestino = Worksheet("Plan2")

With wsOrigem
.Range("A1").Copy Destination:=wsDestino.Range("A1")
End With

End Sub


Meu problema é que o valor em Plan1 é uma fórmula e quando ele cola na plan2 continua sendo uma forma. Preciso que seja colado valores, mas sem que o Excel ative ou selecione a plan2 para colar.
Marcelo G Prudencio
Marcelo G Pr... Geek Registrado
1K Mensagens 227 Curtidas
#2 Por Marcelo G Pr...
27/09/2015 - 19:29
Pq nao pode selecionar a plan 2??????????????

Se é por conta da tela ficar piscando

use no inicio do codigo

application.screenupdating = false no incio do codigo

e

application.screenupdating = true no fim do codigo

para o usuario nao faz nenhuma diferença.

E totalmente invisivel ao olho

Seu codigo esta com erro nesta parte

Set wsOrigem = Worksheet("Plan1")
Set wsDestino = Worksheet("Plan2")


Use assim

Set wsOrigem = Worksheets("Plan1")
Set wsDestino = Worksheets("Plan2")


Esse comando Selection.PasteSpecial Paste:=xlPasteValues

cola especial valores
Marcelo Prudencio
Microsoft Excel Brasil no Facebook

"Começar já é a metade do caminho." - Autor Desconhecido
Simplifica que simples fica. - Nicole Tomazella.
"O Simples é Sempre Melhor Que o Complicado" - Jorge Paulo Lemann.
Intruder18
Intruder18 Novo Membro Registrado
26 Mensagens 2 Curtidas
#3 Por Intruder18
27/09/2015 - 20:20
Agradeço a ajuda.
A parte do erro provavelmente eu digitei errado aqui no fórum.

Também usei outros exemplos com o colar valores.

O comando para ficar invisível a seleção da planilha ajuda muito.

Porém ainda preciso de algum comando que exporte o valor para a outra planilha sem a ativar a segunda planilha.

A provação é muito extensa, são muitas linhas de código e essa seleção faz com que a execução do código fique muito lento.
Marcelo G Prudencio
Marcelo G Pr... Geek Registrado
1K Mensagens 227 Curtidas
#5 Por Marcelo G Pr...
28/09/2015 - 11:20
Cara o que vc chama de muito grande?????????

2000 linhas!!

Isso o Excel processa em segundos tenho algumas plans que trabalham de forma semelhante, e processa em segundos, que trabalham aproximadamente com essa quantidade de linhas que falei.
Marcelo Prudencio
Microsoft Excel Brasil no Facebook

"Começar já é a metade do caminho." - Autor Desconhecido
Simplifica que simples fica. - Nicole Tomazella.
"O Simples é Sempre Melhor Que o Complicado" - Jorge Paulo Lemann.
Marcelo G Prudencio
Marcelo G Pr... Geek Registrado
1K Mensagens 227 Curtidas
#8 Por Marcelo G Pr...
28/09/2015 - 23:34
Nao da pra reduzir a quantidade de codigo ao inves de ter um monte de call isso, call aquilo, pegar essas rotinas e colocar tudo em uma so

As vezes na hora de escrever é muito bom fazer assim pq isso facilita para quem esta programando mas o ideial é juntar esses codigos.
Marcelo Prudencio
Microsoft Excel Brasil no Facebook

"Começar já é a metade do caminho." - Autor Desconhecido
Simplifica que simples fica. - Nicole Tomazella.
"O Simples é Sempre Melhor Que o Complicado" - Jorge Paulo Lemann.
Marcelo G Prudencio
Marcelo G Pr... Geek Registrado
1K Mensagens 227 Curtidas
#10 Por Marcelo G Pr...
29/09/2015 - 10:05
Intruder se usar o comando de desabilitar a função de tela que postei no inicio simplesmente o pisca pisca, que deixa o codigo lento, (ja testei, a diferença é enorme, o mesmo codigo com a atualização de tela ligada demorou uns 15 seg para executar, com ela desligada caiu para 2 segundos), experimente o mesmo codigo das duas maneiras e veja a diferença.

Acabei de testar uma planilha pequena aqui com 1303 linhas com a atualização de tela demorou proximo a 30 seg sem a atualizaçao de tela o mesmo codigo rodou em 3 seg ou seja 1/10 do tempo.

Se quiser testar seu codigo faz o seguinte (faço isso sempre para testar a velocidade dos que escrevo)

no inicio do codigo

range("A1").value=time

No final do codigo

range("B1").value= time

E obvio que a diferença dos dois horarios é o tempo de execução da macro, para ter um calculo mais preciso desabilite qualquer ação que dependa do usuario como msgbox por exemplo
Marcelo Prudencio
Microsoft Excel Brasil no Facebook

"Começar já é a metade do caminho." - Autor Desconhecido
Simplifica que simples fica. - Nicole Tomazella.
"O Simples é Sempre Melhor Que o Complicado" - Jorge Paulo Lemann.
© 1999-2024 Hardware.com.br. Todos os direitos reservados.
Imagem do Modal