Notifications
Clear all

simplificar codigo

10 Posts
3 Usuários
0 Reactions
1,668 Visualizações
(@nilson1978)
Posts: 73
Trusted Member
Topic starter
 

Boa Noite
Preciso simplificar o cod para cadastro para que nao fique pesado, pois ainda esta no inicio do projeto
ainda terei mais abas a preparar
se alguém puder me dar uma força fico grato

 
Postado : 15/10/2017 7:50 pm
leandroxtr
(@leandroxtr)
Posts: 447
Reputable Member
 

Amigo, bom dia!

Não acho que o código está tão complexo/grande, no entanto, é sempre bom otimizar.

Dei uma reduzida no código.

Veja se te atende.

Abraço!

Se te ajudou, não se esqueça de dar um like na resposta e marcar o tópico como finalizado.

Abraços!
Leandro Cordeiro

 
Postado : 16/10/2017 6:11 am
(@osvaldomp)
Posts: 857
Prominent Member
 

Dei uma reduzida no código.

Segue outra solução com base na sua ideia de colocar fórmulas em 'AA5:DA5':

Sub ReplicaDados()
 Sheets("banco").Cells(Rows.Count, 1).End(3)(2).Resize(, 79).Value = Range("AA5:DA5").Value
End Sub

Osvaldo

 
Postado : 16/10/2017 7:22 am
leandroxtr
(@leandroxtr)
Posts: 447
Reputable Member
 

Achei super interessante sua complementação, Osvaldo!

Poderia explicar como funciona toda essa linha de código, e mais especificamente essa propriedade "End(3)(2)" ?

Abraço!

Se te ajudou, não se esqueça de dar um like na resposta e marcar o tópico como finalizado.

Abraços!
Leandro Cordeiro

 
Postado : 16/10/2017 7:49 am
(@osvaldomp)
Posts: 857
Prominent Member
 

Cells(Rows.Count, 1).End(3)(2) ~~~> é a referência à primeira célula vazia da coluna 'A' abaixo da tabela

1.este comando Cells(Rows.Count, 1).End(3) ~~~> equivale ao comando Range("A1048576").End(xlUp)
vale comentar que esta parte do primeiro comando Cells(Rows.Count, 1) serve também para as versões do Excel anteriores a 2007, ao passo que esta parte do segundo Range("A1048576") provocará erro naquelas versões
End(n) ~~~> o número n equivale aos comandos conforme abaixo:
xlToLeft ~~~> 1
xlToRight ~~~> 2
xlUp ~~~> 3
xlDown ~~~> 4
então ~~~> End(3) = End(xlUp)

2. o número em vermelho End(3)(2) equivale a End(3).Cells(2,1)
então:
End(3).Cells(1,1) referencia a própria célula End(3)
End(3).Cells(2,1) referencia uma célula abaixo em relação à célula End(3)
ainda, o Excel entende o (2) como sendo Cells(2,1), daí ~~~> End(3)(2) = End(3).Cells(2,1) = End(xlUp).Offset(1, 0)

Osvaldo

 
Postado : 16/10/2017 8:38 am
leandroxtr
(@leandroxtr)
Posts: 447
Reputable Member
 

Uau!!

Que interessante... Não sabia dessa permissividade da propriedade "End". Isso permite uma dinâmica interessante demais para vários tipos de rotina (no uso de variáveis no lugar do número, por exemplo).

Mais interessante ainda é essa possibilidade de abreviar o comando "Cells" com apenas um número "(2)".

Obrigado pelo esclarecimento.

Se te ajudou, não se esqueça de dar um like na resposta e marcar o tópico como finalizado.

Abraços!
Leandro Cordeiro

 
Postado : 16/10/2017 10:48 am
(@nilson1978)
Posts: 73
Trusted Member
Topic starter
 

Boa Noite
Funcionou perfeitamente, porem quando faço as alterações para a limpeza após o cadastro e receber novo cadastro me pareceu um pouco pesado,
não consegui adaptar para não permitir codigos duplicados (cadastro "E5" e "U11).
Nem a macro de busca funcionou ("E5").
Fico grato se puder dar uma olhadinha onde estou errando

 
Postado : 16/10/2017 8:23 pm
leandroxtr
(@leandroxtr)
Posts: 447
Reputable Member
 

Não entendi

Se te ajudou, não se esqueça de dar um like na resposta e marcar o tópico como finalizado.

Abraços!
Leandro Cordeiro

 
Postado : 17/10/2017 5:49 am
(@nilson1978)
Posts: 73
Trusted Member
Topic starter
 

Boa Noite
Vou tentar lhe explicar
precisava simplificar o código para nao ficar tão extenso, da forma que vc me ajudou funcionou perfeitamente,(obrigado), porem preciso agregar o mesmo para que apos o lançamento limpe os campos para receber novo cadastro e evitar a duplicidade de codigo no (banco) e não permitir que o cod chave já esteja cadastrado seguindo uma lista, e busca que faço para trazer as informações do banco através do codigo tbm nao esta funcionando
grato pela atenção

 
Postado : 17/10/2017 7:56 pm
leandroxtr
(@leandroxtr)
Posts: 447
Reputable Member
 

Amigo,

Sugiro que solicite em partes...
Abra um tópico específico para estas próximas demandas (apagar os dados na tabela e pesquisar se o código já existe). Dessa forma, quando outra pessoa tiver uma necessidade parecida, facilitará para encontrar.

Se te ajudou, não se esqueça de dar um like na resposta e marcar o tópico como finalizado.

Abraços!
Leandro Cordeiro

 
Postado : 18/10/2017 6:14 am