none
Macro em VBA RRS feed

  • Pergunta

  • Pessoal, boa tarde.

    Preciso criar uma macro onde eu possa clicar no botão e rodar a macro para copiar as formulas e formatação da ultima linha preenchida e colar na proxima linha abaixo que estiver vazia, logo apos a que foi copiada formulas e formatação.

    Segue abaixo a macro que criei, mas ela não adiciona o que foi copiado na ultima linha em branco, e sim no mesmo local sempre. 

    So que na primeira coluna tenho um contador de itens, que quando adiciono dados ela conta mais 1, mas com essa macro nao funciona, prq nao cola na ultima linha em branco.

    Segue codigo:

    Sub Inserir()
    '
    ' Inserir Macro

        Range("A4:U4").Select
        Selection.Copy
        Rows("5:5").Select
        Selection.Insert Shift:=xlDown
        Application.CutCopyMode = False
        Range("B5").Select
    End Sub

    Segue abaixo modelo da planilha

     
    Item Data Fonte Defeito Posto de trabalho Matrícula Montador Grupo de falha TWTTP Causa (TWTTP) Saída (TWTTP) Ações Responsável Data fechamento TWTTP Status Foto Ocorrências % Concluídas Quantidade concluída % Pendentes Quantidade pendente
    1 24/mar                               #DIV/0!   #DIV/0!  
    2 24/mar                               #DIV/0!   #DIV/0!  
    3 24/mar                               #DIV/0!   #DIV/0!  
    4 24/mar                               #DIV/0!   #DIV/0!  
    5 24/mar                               #DIV/0!   #DIV/0!  

    Desde ja agradeço.

    quinta-feira, 24 de março de 2016 15:53

Respostas

  • Boa Tarde Philipe, 

    Para pegar a última linha preenchida, utilize:

    Dim lngLastRow as long
    
    lngLastRow = Sheets("NOMEDASUAPLANILHA").RANGE("A1").end(xldown).row

    A variável lngLastRow conterá o número da última linha preenchida na coluna A, depois você pode somar o valor 1 para indicar que é a próxima linha em branco.

    Ex:

    Cells(lngLastRow + 1, 1).select


    André Santo | basevba.wordpress.com

    quinta-feira, 24 de março de 2016 15:58
  • Philipe,

    Sugiro que você não utilize macros. Ao invés disso, utilize o recurso de tabelas:

    VocÊ verá que ao escrever uma fórmula numa coluna de uma tabela, a fórmula irá ser copiada automaticamente para as linhas de baixo.


    http://www.ambienteoffice.com.br - http://www.clarian.com.br

    sexta-feira, 25 de março de 2016 21:28
    Moderador

Todas as Respostas

  • Boa Tarde Philipe, 

    Para pegar a última linha preenchida, utilize:

    Dim lngLastRow as long
    
    lngLastRow = Sheets("NOMEDASUAPLANILHA").RANGE("A1").end(xldown).row

    A variável lngLastRow conterá o número da última linha preenchida na coluna A, depois você pode somar o valor 1 para indicar que é a próxima linha em branco.

    Ex:

    Cells(lngLastRow + 1, 1).select


    André Santo | basevba.wordpress.com

    quinta-feira, 24 de março de 2016 15:58
  • Tentei fazer modificações parecidas no codigo que enviei, mas nunca fica correto. Não tenho conhecimento na linguagem VB, por isso muita dificuldade para resolver esse problema.

    Esse código que eu enviei ele já faz a cópia do que preciso mas apenas não cola onde deveria. Onde deveria inserir o codigo que vc enviou ?

    quinta-feira, 24 de março de 2016 16:00
  • Philipe,

    Sugiro que você não utilize macros. Ao invés disso, utilize o recurso de tabelas:

    VocÊ verá que ao escrever uma fórmula numa coluna de uma tabela, a fórmula irá ser copiada automaticamente para as linhas de baixo.


    http://www.ambienteoffice.com.br - http://www.clarian.com.br

    sexta-feira, 25 de março de 2016 21:28
    Moderador