Notifications
Clear all

Inserir intervalo através da função .value

9 Posts
3 Usuários
0 Reactions
1,397 Visualizações
(@jorrobeh)
Posts: 0
New Member
Topic starter
 

Bom dia amigos,

Gostaria de uma ajuda.
Preciso realizar o cadastro de clientes, onde os dados estão em um intervalo nomeado "VENDA" da planilha "Cadastro"
Criei um botão (Cadastrar Venda) com uma macro que armazena os dados do intervalo numa variável (venda) e transfere para a última linha da coluna C de uma outra planilha ("Vendas").
Fiz a depuração com inspeção de variáveis e deu tudo certo até o ponto de transferir o valor, que é onde não consegui avançar :(
O código não transfere o intervalo inteiro, somente a primeira coluna. Como faço para transferir um intervalo inteiro através da função .value?
A planilha é mais complexa, mas só vou colar o código a que se refere esse tópico:

Sub Cadastrar_Venda()
'
' Cadastrar_Venda Macro
' [VARIÁVEIS]
venda = Worksheets("Cadastro").Range("VENDA")
colarvenda = Sheets("Vendas").Cells(Rows.Count, "C").End(xlUp).Offset(1, 0).AddressLocal
    Sheets("Vendas").Select
    On Error Resume Next
    ActiveSheet.ShowAllData
Planilha2.Range(colarvenda).Value = venda
End Sub

Acredito que não seja isso. Mas essa é a idéia que pretendo executar.
Agradeço a ajuda ;)

 
Postado : 23/07/2016 7:48 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Venda é uma range nomeada, então altere/corrija essa range

 
Postado : 23/07/2016 9:05 am
(@jorrobeh)
Posts: 0
New Member
Topic starter
 

Venda é uma range nomeada, então altere/corrija essa range

Exato Reinaldo. O intervalo mencionado é uma range nomeada.
Não entendi sua sugestão... :roll:

 
Postado : 23/07/2016 9:37 am
(@osvaldomp)
Posts: 857
Prominent Member
 

Experimente

Sub ReplicaDados()
 Range("VENDA").Copy Sheets("Vendas").Cells(Rows.Count, 3).End(3)(2)
End Sub
 
Postado : 23/07/2016 11:50 am
(@jorrobeh)
Posts: 0
New Member
Topic starter
 

Experimente

Sub ReplicaDados()
 Range("VENDA").Copy Sheets("Vendas").Cells(Rows.Count, 3).End(3)(2)
End Sub

Que bom que você pegou a idéia do quero fazer e melhorou a execução. Você resumiu meu código eliminando as variáveis, muito obrigado Osvaldomp.
Porém ainda não resolveu por completo, pois preciso que transcreva só os valores e desse modo está replicando as fórmulas :|
Pode me dar essa luz que faltou?

 
Postado : 23/07/2016 7:19 pm
(@osvaldomp)
Posts: 857
Prominent Member
 

Veja se este atende.

Sub ReplicaDadosV2()
 Range("VENDA").Copy
 Sheets("Vendas").Cells(Rows.Count, 3).End(3)(2).PasteSpecial Paste:=xlPasteValues
End Sub
 
Postado : 23/07/2016 7:45 pm
(@jorrobeh)
Posts: 0
New Member
Topic starter
 

Veja se este atende.

Sub ReplicaDadosV2()
 Range("VENDA").Copy
 Sheets("Vendas").Cells(Rows.Count, 3).End(3)(2).PasteSpecial Paste:=xlPasteValues
End Sub

Exatamente isso Osvaldomp. Muito agradecido cara. Sou amador ainda nisso tudo e com esse código vou poupar muitas linhas hehehe
Só uma última dúvida, ainda relacionado com o tópico, pra eu poder encerrar feliz rsrsr....

O que quer dizer o (3) e o (2) após o End no código?

 
Postado : 23/07/2016 7:53 pm
(@osvaldomp)
Posts: 857
Prominent Member
 

O que quer dizer o (3) e o (2) após o End no código?

(3) equivale a (xlUp)

(2) equivale e Offset(1,0)

 
Postado : 23/07/2016 8:03 pm
(@jorrobeh)
Posts: 0
New Member
Topic starter
 

Maravilha amigo Osvaldomp.
Muito agradecido.
Antes de criar o tópico dei uma procurada no assunto e não achei nada. Espere que este assunto ajude alguém que também precise desta função.
Abraço!

 
Postado : 23/07/2016 8:09 pm