Notifications
Clear all

VBA pegar última linha preenchida e então rodar macro

2 Posts
2 Usuários
0 Reactions
1,097 Visualizações
(@jnexcel)
Posts: 298
Reputable Member
Topic starter
 

Prezados, bom dia!

Eu tenho uma pasta de trabalho com duas planilhas

1º Bando de dados

2º Cadastro

Essa minha 1º planilha recebe informações mais completas do que a minha 2º planilha

pois bem, vamos ao que ocorre.

tenho o seguinte código:

    Sheets("Cadastro").Select
    Range("A3").Select
    ActiveCell.FormulaR1C1 = _
        "=IF('Banco de dados'!RC[1]<>"""",'Banco de dados'!RC[1],"""")"
    Range("B3").Select
    ActiveCell.FormulaR1C1 = _
        "=IF('Banco de dados'!RC[1]<>"""",'Banco de dados'!RC[1],"""")"
    Range("A3:B3").Select
    Selection.Copy
    Range("A4:A10028").Select
    ActiveSheet.Paste
    Application.CutCopyMode = False

    Range("C3").Select
    ActiveCell.FormulaR1C1 = _
        "=IF('Banco de dados'!RC[1]="""","""",IF('Banco de dados'!RC[1]=5101,5102,IF('Banco de dados'!RC[1]=5102,5102,IF('Banco de dados'!RC[1]=5105,5102,IF('Banco de dados'!RC[1]=5401,5405,IF('Banco de dados'!RC[1]=5403,5405,IF('Banco de dados'!RC[1]=5405,5405,""Verificar"")))))))"
    Range("D3").Select
    ActiveCell.FormulaR1C1 = _
        "=IF(RC[-1]="""","""",IF(RC[-1]=5102,102,IF(RC[-1]=5405,500,""Verificar"")))"
    Columns("C:D").Select
    Columns("C:D").EntireColumn.AutoFit
    Range("C3:D3").Select
    Selection.Copy
    Range("C4:C10028").Select
    ActiveSheet.Paste
    Application.CutCopyMode = False
    Columns("C:D").Select
    Columns("C:D").EntireColumn.AutoFit

como eu não sei exatamente quantas linhas vai ter minha 1º planilha, eu coloquei até 10028 (supondo que vai até essa quantidade).

mas minha dúvida é.

como faço para deixar a quantidade real que existe?

exemplo:

    Range("exatamente ao número de linhas da primeira planilha").Select

Preciso alterar esse código para preencher de acordo com o número de linhas.

eu utilizei esse código, mas se alguém tiver um código melhor eu também aceitarei

muito obrigado a todos pela atenção

 
Postado : 16/10/2019 6:23 am
Wagner Morel
(@wagner-morel-vidal-nobre)
Posts: 0
Illustrious Member
 

JNEXCEL,

Bom dia!

Faça assim:

Sub Teste()
    Dim UltimaLinha As Long
    
    UltimaLinha = Sheets("Banco de dados").Cells(Cells.Rows.copunt, 1).End(xlUp).Row
    'Se os dados começarem na linha 3 (após o cabeçalho) então use assim. Caso contrário, _
    coloque a primeira linha com dados após o cabeçalho no comando abaixo
    If UltimaLinha < 3 Then UltimaLinha = 3
    
    Sheets("Cadastro").Select
    Range("A3").Select
    ActiveCell.FormulaR1C1 = _
        "=IF('Banco de dados'!RC[1]<>"""",'Banco de dados'!RC[1],"""")"
    Range("B3").Select
    ActiveCell.FormulaR1C1 = _
        "=IF('Banco de dados'!RC[1]<>"""",'Banco de dados'!RC[1],"""")"
    Range("A3:B3").Select
    Selection.Copy
    Range("A4:A" & UltimaLinha).Select
    ActiveSheet.Paste
    Application.CutCopyMode = False

    Range("C3").Select
    ActiveCell.FormulaR1C1 = _
        "=IF('Banco de dados'!RC[1]="""","""",IF('Banco de dados'!RC[1]=5101,5102,IF('Banco de dados'!RC[1]=5102,5102,IF('Banco de dados'!RC[1]=5105,5102,IF('Banco de dados'!RC[1]=5401,5405,IF('Banco de dados'!RC[1]=5403,5405,IF('Banco de dados'!RC[1]=5405,5405,""Verificar"")))))))"
    Range("D3").Select
    ActiveCell.FormulaR1C1 = _
        "=IF(RC[-1]="""","""",IF(RC[-1]=5102,102,IF(RC[-1]=5405,500,""Verificar"")))"
    Columns("C:D").Select
    Columns("C:D").EntireColumn.AutoFit
    Range("C3:D3").Select
    Selection.Copy
    Range("C4:C" & UltimaLinha).Select
    ActiveSheet.Paste
    Application.CutCopyMode = False
    Columns("C:D").Select
    Columns("C:D").EntireColumn.AutoFit
End Sub

Desenvolvo pequenas soluções em VBA Excel a valores que variam entre R$ 50,00 a R$ 200,00. Se te interessar, entre no meu instagran (vba_excel_desenvolvimento)

Atenciosamente
Wagner Morel

 
Postado : 16/10/2019 8:09 am