Pessoal muito boa tarde! Me chamo Gabriel.. preciso otimizar um código, que está demorando + de 50 segundos para dar insert em 12 linhas preenchidas em um formulário que criei (sequencialmente) pelo VBA...
Vou falar a forma que eu fiz isso.. tentando explicar detalhadamente e o mais simples possivel... (eu sei que está muitoo mal otimizado)
Aqui eu identifico a ultima linha vazia da aba, para dar os inserts lá:
'ultimaLinha = Sheets("VENDAS").Range("A1048576").End(xlUp).Row + 1
E aqui os inserts dos campos do meu formulario:
'
Cells(ultimaLinha, 1) = CDate(dataf.Value)
'Cells(ultimaLinha, 3) = CBESCOLHA.Text
'Cells(ultimaLinha, 2) = npedido.Value
'Cells(ultimaLinha, 4) = txt_codigo.Value
'Cells(ultimaLinha, 5) = txt_cliente.Text
'Cells(ultimaLinha, 6) = txtTransporte.Text
'Cells(ultimaLinha, 7) = outras.Text
'-----------
'Cells(ultimaLinha, 8) = T1.Text
'Cells(ultimaLinha, 9) = M1.Text
'Cells(ultimaLinha, 10) = q1.Value
'Cells(ultimaLinha, 11) = p1.Value
'Cells(ultimaLinha, 12) = r1.Text
'Cells(ultimaLinha, 13) = d1.Text
'Cells(ultimaLinha, 14) = obs.Text
Estes T1, M1, Q1.. etc... são os campos que vao de 1 a 12, e estão sendo inseridos na primeira linha vazia da aba, igual mencionei (entao tem o campo T2, M2, Q2..., T3, M3, Q3... até o 12)
O problema é que além de eu não saber fazer o looP para cadastrar isso 12x, em 12 linhas (podem ser até 12 linhas, se ele preencher até o 6, é para cadastrar 6 linhas..) (então no caso eu fiz todo esse código denovo 12 vezes, para cadastrar 12 vezes haha)
Está demorando + de 50 segundos para realizar o cadastro todo....
O problema é que, mesmo com o loop, creio que vai demorar + de 50 segundos de TODO o jeito, pois o loop ajuda a economizar código, mas a linha é a mesma, certo ?
existe algum método, para caso ele tenha preenchido todas as 12 linhas do meu formulario, cadastre todas rapidamente e sequencialmente uma embaixo da outra? (SALVARIA MINHA VIDA!)
Obs: a aba tem mais de 4000 linhas já preenchidas, notei que se eu apago todas elas, e deixo ela sem linhas, na hora de cadastrar a demora cai pela metade, porém ainda demora! (e tambem nao é viavel, pois voltara a ter 4000 linhas)
Se alguma boa alma estiver inspirada, se puder também me dar a luz de um código, que alem que deixe isso de maneira sequencial e rapida, também copie a formatação da linha anterior (para não ter necessidade de deixar linhas pré-criadas, seria magnificamente magnifico!)
Pessoal, desde ja meu muito obrigado!
Postado : 10/10/2019 10:16 am