none
Macro para Colar na Próxima Célula Vazia RRS feed

  • Pergunta

  • Olá

    Eu uso a Macro abaixo para colar dados digitados em certos campos da planilha em uma outra aba da mesma planilha.

    Porem como o numero de linhas cresceu, passou de 1550, a colagem tem demorado muito.

    Gostaria de saber oque posso fazer para o usuário não enxergar os dados sendo colados e o tempo de processamento diminuir.

    Sub Gravar()
    '
    ' Gravar Macro
    ' Transporta os dados da lista de servicos para a aba dados
    '
    ' Atalho do teclado: Ctrl+Shift+G
    '
        Range("D15:K27").Select
        Selection.Copy
        Sheets("Dados").Select
        Range("A2").Select
        Do
            If ActiveCell <> "" Then
            ActiveCell.Offset(1, 0).Select
            End If
        Loop Until ActiveCell = ""
        ActiveCell.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:= _
            False, Transpose:=False
        Application.CutCopyMode = False
        Sheets("Menu").Select
        Range("D15:K27,K12,E23").Select
        Selection.ClearContents

    Agradeço desde já

    quinta-feira, 18 de agosto de 2016 12:35

Todas as Respostas

  • Em relação ao tempo de processamento, para descobrir a última célula, ao invés de :

        Do
            If ActiveCell <> "" Then
            ActiveCell.Offset(1, 0).Select
            End If
        Loop Until ActiveCell = ""

    utilize:

    lngLastRow = Sheets("Dados").Range("A2").End(xlDown).Row
    Sheets("Dados").Cells(lngLastRow + 1, 1).Select

    Para o usuário não ver os dados sendo colados, utilize no início do código:

    application.ScreenUpdating = False

    e ao término:

    application.ScreenUpdating = true

    Adicionalmente, 

    Ao invés de:

        Range("D15:K27").Select
        Selection.Copy

    Utilize:

    Range("D15:K27").Copy

    Creio que isso deve ajudar

    Abs


    André Santo | basevba.wordpress.com

    • Sugerido como Resposta André Santo quinta-feira, 18 de agosto de 2016 13:07
    quinta-feira, 18 de agosto de 2016 13:07