Notifications
Clear all

Macro copiar linha a cima por criterio.

3 Posts
2 Usuários
0 Reactions
611 Visualizações
(@eliandro)
Posts: 0
New Member
Topic starter
 

Boa tarde pessoal, gostaria da ajuda do senhores.

Tenho uma planilha com as seguintes especificações:

Coluna A Coluna B Coluna C Coluna D
1 FIAT Palio 2017
2 FIAT Palio 2018

O que eu preciso é o seguinte, se na Coluna D, o ano for "2018"
A macro ira adicionar uma linha abaixo e Copiara os dados da linha de cima, porém agora colocando o ano de "2019".

Ficaria assim:

Coluna A Coluna B Coluna C Coluna D
1 FIAT Palio 2017
2 FIAT Palio 2018
3 FIAT Palio 2019

Isso, em todos os anos que tiverem como 2018 apenas.

Consegui adicionar uma linha em branco sempre que encontrar o ano de "2018", porém não sei como copiar a valor da linha de cima e colar na nova criada alterando o ano...
O código que estou usando é o seguinte:

Sub Main()
    Dim lRow As Long
    Dim ws As Excel.Worksheet
    Dim lLast As Long
    
    Application.ScreenUpdating = False
    
    Set ws = ActiveSheet
    With ws
        lLast = .Cells(.Rows.Count, "D").End(xlUp).Row
        'Considernado uma linha de cabeçalho:
        For lRow = lLast To 2 Step -1
            If .Cells(lRow, "D") = "2018" Then
                .Rows(lRow + 1).Insert
            End If
            
        Next lRow
    End With
    
    Application.ScreenUpdating = True
    
End Sub
 
Postado : 05/06/2018 9:15 am
(@eliandro)
Posts: 0
New Member
Topic starter
 

Encontrei a solução para meu problema, deixarei a mesma aqui para o caso de servidor a alguém da comunidade.
Segue:

Sub Main()
Dim lRow As Long
Dim ws As Excel.Worksheet
Dim lLast As Long

    Application.ScreenUpdating = False

    Set ws = ActiveSheet
    
    With ws
        lLast = .Cells(.Rows.Count, "D").End(xlUp).Row
        
        'Considernado uma linha de cabeçalho:
        For lRow = lLast To 2 Step -1
        
            If .Cells(lRow, "D") = "2018" Then
                .Rows(lRow + 1).Insert
                
                .Cells(lRow + 1, "D") = "2019"
                .Cells(lRow + 1, "C") = .Cells(lRow, "C")
                .Cells(lRow + 1, "B") = .Cells(lRow, "B")
                .Cells(lRow + 1, "A") = .Cells(lRow, "A") + 1
            End If

        Next lRow

    End With

    Application.ScreenUpdating = True

End Sub
 
Postado : 05/06/2018 11:14 am
(@wagner-morel-vidal-nobre)
Posts: 4063
Famed Member
 

Eliandro,

Boa tarde!

Seja muito bem vindo ao fórum.

Para aproveitar ao máximo o fórum e sempre manter o mesmo de forma organizada, sugiro ler os tópico da regras abaixo:
viewtopic.php?f=7&t=16757
viewtopic.php?f=7&t=203
viewtopic.php?f=7&t=7903
viewtopic.php?f=7&t=3841
viewtopic.php?f=7&t=12600
viewtopic.php?f=7&t=3371

Algumas solicitações especiais que pedimos, por gentileza, ficar atento:
1 - Não inserir no titulo de suas postagens expressões como Help, Ajuda, etc. O título deve ser um resumo da sua necessidade para que outras pessoas que tenham a mesma dúvida possam efetuar a pesquisa e achar como foi resolvido.
2 - Não insira em suas mensagens frases todas escritas em letras maiúsculas. Isso, na Internet, é compreendido como gritos e muitos usuários sequer respondem somente por esse fato!
3 - Insira sempre um arquivo exemplo compactado com .ZIP aqui mesmo no fórum. Existe, logo abaixo da caixa de mensagens, uma aba chamada "Adicionar um anexo" para essa finalidade. O arquivo exemplo deve ser pequeno, com apenas 5 linhas no máximo, compactado com .ZIP e ter o mesmo layout (nome do arquivo, nome das abas/guias/folhas, mesma linha/coluna onde os dados se iniciam) do arquivo original. Links de arquivos enviados para sites de compartilhamento de arquivos, muitas vezes são bloqueados pelas empresas, por conterem muitos vírus. Alguns usuários que acessam o fórum a partir de empresas não conseguem baixar tais arquivos.
4 - Não utilize a ferramenta CITAR para inserir o inteiro teor das mensagens que lhe são encaminhadas como resposta. Citações, se estritamente necessárias ao entendimento da mensagem que você quer enviar, devem ser apenas de pequenos trechos das mensagens.
5 - Se for postar códigos VBA aqui no fórum, utilize a ferramenta CODE localizada logo no início da caixa de mensagens (quinto botão da esquerda para a direita). As linhas de código devem ficar entre as palavras "CODE e /CODE".
6 - Agradeça sempre às pessoas que lhe responderam e às mensagens que atenderam a necessidade de sua demanda. Esse agradecimento deve ser clicando na mãozinha que fica localizada ao lado da ferramenta CITAR. Lembre-se: o fórum é gratuito e esse é o único incentivo para as pessoas que prestam ajuda. Você pode agradecer a quantos usuários quiser.
7 - O título ou o texto das mensagens postadas não devem ser escritos todo em letras maiúsculas. Na internet, tudo escrito em letras maiúsculas é interpretado como gritos e muitos usuários sequer olham para esse tipo de mensagem.

 
Postado : 05/06/2018 11:25 am