none
Localizar ultima linha preenchida e escrever na próxima linha em branco RRS feed

  • Pergunta

  • Boa tarde, 

    Sou novato em VBA, estou querendo que minha Macro pegue as informações da minha planilha.

                        

    Option Explicit
    Dim Pendencia, Estacao, doc, Tecnico As String
    Dim Data, horainicio, horatermino As Date

    Sub AtualizarCompilado()

    consolidar ("Planilha1")

    Sheets("Consolidação de Pendência").Activate

    End Sub
    Sub consolidar(nome_aba As String)
    Dim range1, cell As Range

    Sheets(nome_aba).Activate

    Set range1 = Range("A1:A18000")

    For Each cell In range1
        If AnalizarLinha(cell) Then
            Call RegistrarLinha
        End If
    Next

    End Sub
    Function AnalizarLinha(cell As Range) As Boolean

        If cell.Offset(0, 14).Value = "Concluído" Then
            AnalizarLinha = False
        ElseIf cell.Offset(0, 14).Value = "Pendente" Then
            Data = cell.Offset(0, 3).Value
            Estacao = cell.Offset(0, 5).Value
            doc = cell.Offset(0, 6).Value
            Tecnico = cell.Offset(0, 7).Value
            horainicio = cell.Offset(0, 8).Value
            horatermino = cell.Offset(0, 9).Value
            Call PegarStringCelula(cell)
            AnalizarLinha = True
        Else
            AnalizarLinha = False
        End If

    End Function
    Sub PegarStringCelula(cell As Range)
        If cell.Offset(0, 14).Value = "Pendente" Then
            Pendencia = cell.Offset(0, 15).Value
            Data = cell.Offset(0, 3).Value
            Estacao = cell.Offset(0, 5).Value
            doc = cell.Offset(0, 6).Value
            Tecnico = cell.Offset(0, 7).Value
            horainicio = cell.Offset(0, 8).Value
            horatermino = cell.Offset(0, 9).Value
        Else
            Pendencia = ""
            cell.Offset(0, 21).Value = "Sem Dados"
        End If

    End Sub
    Sub RegistrarLinha()
    Dim nome_aba_planilha, nome_aba_consolidacao As String
    Dim range_consolidado, cell As Range
    Dim UltimaLinha As interger

    nome_aba_planilha = ActiveSheet.Name
    nome_aba_consolidacao = "Consolidação de Pendência"

    Sheets(nome_aba_planilha).Activate
    Sheets(nome_aba_consolidacao).Activate

    Set range_consolidado = Range("A1", UltimaLinha("A1").End(xlDown)).Row + 1

    For Each cell In range_consolidado
        If cell.Value = "" Then
            cell.Offset(0, 1).Value = Data
            cell.Offset(0, 2).Value = Estacao
            cell.Offset(0, 3).Value = doc
            cell.Offset(0, 4).Value = Tecnico
            cell.Offset(0, 5).Value = horainicio
            cell.Offset(0, 6).Value = horatermino
            cell.Offset(0, 9).Value = Pendencia
        End If

        Exit For

    Next
    Sheets(nome_aba_planilha).Activate

    End Sub

    Minha Planilha é uma Ficha de Intervenção Técnica tenho inúmeras informações que preciso. Criei uma aba chamada "Controle de Pendências" ao apertar um botão todas as pendecias aparecem na aba.Estou tendo dificuldades na hora que registra as informações na aba de pendência, pois não está pulando linha e as informações estão sendo substituidas e ficando em uma linha só. Por favor alguém poderia me ajudar?

    segunda-feira, 22 de abril de 2019 16:58

Todas as Respostas

  • Vinicius.

    A variável "UltimaLinha" não tem qualquer valor atribuído.

    Deves especificá-la como Range e não como Integer.

    Dim UltimaLinha as range

    Para encontra a última linha preenchida, basta isto:

    UltimaLinha=Cells(cells.Rows.Count, "A").End(xlUp).Row


    M_A_S_L

    sábado, 18 de maio de 2019 15:27