Notifications
Clear all

SELECIONA ULTIMA CELLS PREENCHIDA E COLA NA PRX

5 Posts
2 Usuários
0 Reactions
2,489 Visualizações
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Olá pessoal preciso de uma macro para que sempre que acionar o botão, a macro seleciona a ultima célula preenchida da coluna A e cole na próxima célula vazia da mesma coluna.

silvajmp

 
Postado : 08/10/2014 2:08 pm
(@themrl16)
Posts: 60
Trusted Member
 

Boa tarde Silva!

Verifique se a solução abaixo atende seu caso:

Sub tst()
    Dim iLastRow As Long
    Dim ws As Worksheet
    
    Set ws = ActiveSheet 'Planilha que será validada pelo botão
    iLastRow = ws.Cells(Cells.Rows.Count, 1).End(xlUp).Row 'Pega o nº da última célula preenchida na coluna 1 (A)
    
    Range("A" & iLastRow + 1).Value = Range("A" & iLastRow).Value
End Sub
 
Postado : 08/10/2014 2:19 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

thermrl16 obrigado por me responder, quando você diz ActivateSheets 'Planilha que será validada pelo botão, você que dizer colar este código na aba onde o botão será acionado, é isso? e outra coisa na verdade meus dados estão na coluna AF a partir da linha 18, então a macro deverá buscar nesta coluna o último preenchimento, copiar e colar na próxima célula vazia da coluna AF.

silva_jmp

 
Postado : 08/10/2014 2:51 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Com o Excel aberto, siga o passo a passo:
- Clique no botão do Excel, lá em cima no canto esquerdo superior e seleciona Opções do Excel. Ali, vc vai encontrar as opções da ribbon, garanta que a ribbon desenvolvedor esteja selecionada
- De volta ao Excel, Selecione a planilha aonde que que esse código rode
- Agora vá na guia Desenvolvedor (da ribbon, ou seja, do menu do excel)
-- Tem um botão chamado Modo de Design (um com um esquadro e uma regua), não lembro ao certo o nome em português dele. Clique nele. Ele vai ficar afundado.
-- Tem um botão inserir, clique nele, vai ver diversos controles. Escolha o botão da categoria AcitveX
-- Coloque o botão na planilha, do tamanho que quiser. Se quiser trocar nome e outros detalhes, clique com o botão direito do mouse sobre o botão e vá em Propriedades.

- Agora está tudo bonito, dê duplo clique no botão. Vai aparecer uma coisa que vc nunca viu antes. Esse é o VBE (Visual Basic Editor). Nele vc escreve códigos em VBA. Para abrir e fechar o VBE, a tecla de atalho é Alt+F11.

- Nesta tela do código do botão (dps q vc deu o duplo clique nele), cole o código abaixo, escrito pelo themrl16, mas revisado por mim... Cole esse código:

Sub FF()
Dim ws          As Worksheet
Dim lLastRow    As Long
Dim lNextRow    As Long
   
    Set ws = ActiveSheet                                        'Planilha que será validada pelo botão,
                                                                'ou seja, a planilha onde o botão está e aonde a macro vai rodar.
    With ws
        lLastRow = .Cells(.Cells.Rows.Count, 32).End(xlUp).Row  'Pega o nº da última célula preenchida na coluna 32 (AF)
        lNextRow = lLastRow + 1                                 'Soma um (1) à última linha preenchida.
        
        If Application.CutCopyMode <> 0 Then                    'Verifica se há algo no Ctrl+C ou no Ctrl+X
            .Range("AF" & lNextRow).Select                      'Seleciona a primeir célula em branco da coluna AF
            .Paste                                              'Cola o que estiver na área de transferência
        End If
    End With
    
End Sub

- Fecha o VBE.

- Vá ao Excel, e clique no botão. Verá que nada acontece. Para ele funcionar, algo precisa estar na área de transferência, ou seja, alguma célula precisa estar piscando pq foi copiada ou recortada.

Era isso... Agora sim um tutorial mais completo...

FF

 
Postado : 08/10/2014 5:56 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Fernando obrigado pelo tutorial, mas como você mesmo disse só irá colar se houver alguma coisa na caixa de transferência, então com um pouco mais de pesquisa e testes, consegui obter o resultado esperado com o código abaixo:
Fica a dica do funcionamento da macro: Seleciona e cópia a última célula preenchida de uma coluna desejada e cola na próxima célula vazia da mesma coluna.

Private Sub CommandButton1_Click()
 Application.ScreenUpdating = False
    Sheets("Relatório").Select ' Seleciona a Plan5(Relatório)
    Range("AF1").Select ' Posiciona na primeira célula da coluna desejada
    Selection.End(xlDown).Select ' Posiciona na última célula preenchida da coluna desejada
    Selection.Copy ' Copia, deixando o valor copiado na caixa de transferencia
    Range("AF1").Select ' Posiciona na primeira célula da coluna desejada
    Selection.End(xlDown).Select ' Posiciona na última célula preenchida da coluna desejada
    ActiveCell.Offset(1, 0).Select '.Offset(1, 0) - O valor 1 significa linha, então pula uma linha abaixo da célula preenchida e o valor 0 significa a coluna no caso será na mesma coluna vai ser 0.
    ActiveCell.PasteSpecial xlPasteFormulas 'Cola especial como formula
    ActiveSheet.Range("B4").Select ' Seleciona célula desprotegida
 Application.ScreenUpdating = True
End Sub

Grato

silvajmp

 
Postado : 09/10/2014 8:52 am