none
Limite de processamento RRS feed

  • Pergunta

  • Boa tarde!


    Criei um código em VBA para que ele copie as informações de uma tabela (Desenvolvimento), mande para outra algumas info (Produção), copie tudo para outra (Backup) e apague a info da original (Desenvolvimento) se algumas condições forem concluídas. O código é esse:

    Sub DesenvolvimentoParaProducao()
    
      If Planilha1.AutoFilterMode = True Then
    
      Planilha1.AutoFilter.ShowAllData
    
      Else
    
      End If
    
      If Planilha4.AutoFilterMode = True Then
    
      Planilha4.AutoFilter.ShowAllData
    
      Else
    
      End If
    
    
      ultimaLinha = Planilha4.Cells(Rows.Count, "a").End(xlUp).Row
    
      ultimaLinhaProd = Planilha1.Cells(Rows.Count, "a").End(xlUp).Row
    
      lin = ultimaLinhaProd + 1
    
      ultimaLinhaBackup = Planilha6.Cells(Rows.Count, "a").End(xlUp).Row
    
      linbkp = ultimaLinhaBackup + 1
    
      For i = 3 To ultimaLinha
    
      If Planilha4.Cells(i, 11) = "Exportado para a Produção" And Planilha4.Cells(i, 12) <> "" And Planilha4.Cells(i, 13) <> "" And Planilha4.Cells(i, 14) <> "" Then
    
         Planilha1.Cells(lin, 1) = Planilha4.Cells(i, 1)
    
         Planilha1.Cells(lin, 2) = Planilha4.Cells(i, 5)
    
         Planilha1.Cells(lin, 3) = Planilha4.Cells(i, 3)
    
         Planilha1.Cells(lin, 4) = Planilha4.Cells(i, 2)
    
         Planilha1.Cells(lin, 5) = Planilha4.Cells(i, 14)
    
         Planilha1.Cells(lin, 6) = Planilha4.Cells(i, 10)
    
         lin = lin + 1
    
         Planilha6.Cells(linbkp, 1) = Planilha4.Cells(i, 1)
    
         Planilha6.Cells(linbkp, 2) = Planilha4.Cells(i, 2)
    
         Planilha6.Cells(linbkp, 3) = Planilha4.Cells(i, 3)
    
         Planilha6.Cells(linbkp, 4) = Planilha4.Cells(i, 4)
    
         Planilha6.Cells(linbkp, 5) = Planilha4.Cells(i, 5)
    
         Planilha6.Cells(linbkp, 6) = Planilha4.Cells(i, 6)
    
         Planilha6.Cells(linbkp, 7) = Planilha4.Cells(i, 7)
    
         Planilha6.Cells(linbkp, 8) = Planilha4.Cells(i, 8)
    
         Planilha6.Cells(linbkp, 9) = Planilha4.Cells(i, 9)
    
         Planilha6.Cells(linbkp, 10) = Planilha4.Cells(i, 10)
    
         Planilha6.Cells(linbkp, 11) = Planilha4.Cells(i, 11)
    
         Planilha6.Cells(linbkp, 12) = Planilha4.Cells(i, 12)
    
         Planilha6.Cells(linbkp, 13) = Planilha4.Cells(i, 13)
    
         Planilha6.Cells(linbkp, 14) = Planilha4.Cells(i, 14)
    
         linbkp = linbkp + 1
    
         Planilha4.Cells(i, 1).EntireRow.Delete
    
         End If
    
      Next
    
    End Sub

    O código é executado assim que eu clico no botão "Sincronizar" dentro da tabela.


    O problema é que, apesar de fazer o que foi designado, ele não consegue executar todos de uma vez. Se eu tenho 10 itens que seguem as condições ("Enviado para a Produção" e os outros campos), eu preciso clicar umas 3 ou 4 vezes no botão para que ele execute todos, já que só faz entre 3 ou 4 de uma vez.


    Existe alguma forma de solucionar isso? Ou precisaria criar um loop e toda vez que clicar no botão ele executar o código umas 10x?


    Atenciosamente,

    Eduardo Rissão

    sexta-feira, 20 de setembro de 2019 19:18

Respostas