Notifications
Clear all

cadastrar item na próxima linha

12 Posts
6 Usuários
0 Reactions
1,533 Visualizações
(@jnexcel)
Posts: 0
New Member
Topic starter
 

Prezados, bom dia!

eu tenho um código:

    Range("A2").Select
    Selection.Copy
    Range("E4").Select
    ActiveSheet.Paste
    Application.CutCopyMode = False

porém ele só funciona apenas um vez (se tentar duas vezes ele remove o primeiro).

alguém poderia me explicar por qual motivo isso ocorre?

agradeço pela atenção de todos

 
Postado : 11/04/2018 4:42 am
(@xlarruda)
Posts: 0
New Member
 

Não entendi. poderia explicar melhor?

A leitura do seu código é a seguinte:

Selecione A2 > Copie os dados > Selecione E4 > Cole os dados > Desative o modo copia.

É apenas um procedimento de copiar e colar simples.

 
Postado : 11/04/2018 5:45 am
(@wagner-morel-vidal-nobre)
Posts: 4063
Famed Member
 

JNEXCEL,

Da mesma forma que o colega xlarruda, não entendi o que você quer dizer com "ó funciona apenas um vez (se tentar duas vezes ele remove o primeiro).". Testei aqui e tantas vezes que execute ele vai pegar o que está em A2 e copiar em E4. O que é que você realmente quer?

 
Postado : 11/04/2018 5:49 am
(@jnexcel)
Posts: 0
New Member
Topic starter
 

então, vocês podem perceber o que eu estou dizendo quando realizam o teste.

exemplo:

se na célula A2, eu digitar TECLADO

e usar o alt+f8 para rodar o código, a informação será copiada e colada em E4 ( beleza até aqui)

agora repita o processo, porém digite MOUSE.

você verá que a primeira informação que estava digitada em E4 (TECLADO) foi substituída por MOUSE.

Eu gostaria de entender por qual motivo ele substituí a primeira informação ( não há maneira de manter a antiga e acrescentar novas)

:?:
agradeço pela atenção de todos

 
Postado : 11/04/2018 6:50 am
(@klarc28)
Posts: 0
New Member
 

Porque você deve selecionar a última linha em branco e não E4
https://www.youtube.com/results?search_query=vba+ultima+linha

Dim DLin As Long 
DLin = Range("E1").End(xlDown).Row + 1
Range("A2").Select
    Selection.Copy
    Range("E" & DLin).Select
    ActiveSheet.Paste
    Application.CutCopyMode = False

JNEXCEL E RAMZERO POSSUEM O MESMO PROBLEMA: FALTA DE ESTUDO

Quando você não entende algo, significa que você deve estudar mais.

Estude lógica de programação, se você não entende programação é porque não compreende a lógica de programação.

https://www.youtube.com/results?search_query=logica+de+programa%C3%A7%C3%A3o

Estude laço de repetição. Quem não sabe laço de repetição, não consegue fazer quase nada em programação.

https://www.youtube.com/results?search_query=la%C3%A7o+de+repeti%C3%A7%C3%A3o

Enquanto você não entender essas duas partes, não vai sair do lugar.

Há milhares de vídeos que ensinam a fazer cadastro:

https://www.youtube.com/results?search_query=vba+cadastro

Crie o hábito de executar o código passo a passo apertando F8, se você fizesse isso, veria que ele estava sempre selecionando E4.

https://br.ccm.net/faq/9238-vba-ultima-linha-nao-vazia-todas-as-versoes

 
Postado : 11/04/2018 7:06 am
(@wagner-morel-vidal-nobre)
Posts: 4063
Famed Member
 

JNEXCEL,

Mas isso é muito claro! Se você está utilizando o mesmo código, sempre o valor de E4 será substituído pelo novo valor de A2! O que você quer? Que os novos valores comecem a ser registrados um embaixo do outro na coluna E? Se for isso, é assim:

Sub teste()
    Dim UltimaLinha As Long
    
    UltimaLinha = Sheets("Plan1").Cells(Cells.Rows.Count, 5).End(xlUp).Row
    If UltimaLinha < 4 Then
        UltimaLinha = 4
    Else
        UltimaLinha = UltimaLinha + 1
    End If
    
    Range("A2").Select
    Selection.Copy
    Range("E" & UltimaLinha).Select
    ActiveSheet.Paste
    Application.CutCopyMode = False
End Sub
 
Postado : 11/04/2018 7:10 am
(@xlarruda)
Posts: 0
New Member
 

JNEXCEL você está com dificuldade em interpretação do código.

Lembre que a lógica do seu código é:

Selecione A2 > Copie os dados > Selecione E4 > Cole os dados > Desative o modo copia.

Seu código só faz o que você manda ele fazer. Se você mandou ele copiar de a2 e colar em A4, é o que ele irá fazer para sempre. Para ele não importa o valor da célula, importa apenas o que você mandou ele fazer entende?

Faça um teste:

Copie manualmente o valor de A2 e cole em A4... Agora faça a mesma coisa mais algumas vezes.
Em momento nenhum o excel começara a colocar valores em células diferentes. Isso vale também para o seu código.

Lógica de programação não é um bicho de 7 cabeças, mas precisa ter empenho e dedicação para começar a entender. Uma vez entendido os princípios básicos , você deslancha. Boa sorte nos estudos.

Abrç!

 
Postado : 11/04/2018 9:09 am
(@klarc28)
Posts: 0
New Member
 

Lógica de programação não é um bicho de 7 cabeças, mas precisa ter empenho e dedicação para começar a entender. Uma vez entendido os princípios básicos , você deslancha.

No início, eu tive ENORME dificuldade. Foi assistindo vídeoaulas no Youtube, inventando tarefas para fazer no Excel e pesquisando na internet que consegui melhorar. Na faculdade, os alunos (a maioria) chegam sem noção nenhuma de Lógica de Programação. Os professores arrancam os cabelos tentando explicar e os alunos continuam a não entender. Como eu já tinha uma noção de VBA, foi mais fácil mexer com a Linguagem C.

 
Postado : 11/04/2018 11:16 am
(@wagner-morel-vidal-nobre)
Posts: 4063
Famed Member
 

klarc28,

Bom dia!

Você está certíssimo. Só complementando... também na faculdade, começamos com o desenho simples de um algoritmo como, por exemplo, o algoritmo para trocar o pneu de um carro. Ao desenhar o algoritmo (que nada mais é do que um passo-a-passo) detalhado do que o processador do micro precisa fazer, fica muito fácil se entender e construir a lógica que culminará no código a ser escrito (em qualquer linguagem). A lógica é uma só e é universal. Depois, só precisa conhecer os comandos, funções, eventos, etc de cada uma das linguagens.

 
Postado : 12/04/2018 6:11 am
(@klarc28)
Posts: 0
New Member
 

JNEXCEL, edite o título deste tópico para:

Cadastrar item na próxima linha

 
Postado : 13/04/2018 10:18 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Bom dia klarc28

Favor ler a MP que te enviei. ( Vou apagar esta mensagem após a leitura)

[]s

Patropi Moderador

 
Postado : 14/04/2018 6:20 am
(@mprudencio)
Posts: 0
New Member
 

Vamos usar um codigo pequeno para isso.


Sub Copiar ()

Dim Ultimalinha as long

ultimalinha = Range("A" & rows.count).end(xlup).offset(1,0).row

cells(ultimalinha,2).value = range("A4").value

end sub

 
Postado : 14/04/2018 6:59 am