VBA - Copia uma linha e insere-a na linha abaixo dela

1

Prefácio dizendo que não tenho experiência em VBA, mas preciso que esses dados sejam classificados rapidamente. Eu tenho uma Sage 300 Invoice Import que eu preciso fazer. Eu posso classificar esses dados por meio de fórmulas depois de fazer uma segunda vez. A raiz do problema é que esses dados precisam ser colocados em duas linhas por linha, mas o Excel ignora as linhas.

Eu tenho um snippet de código parcial que funcionaria para mim, mas recebo um erro de referência externo quando o executo.

ActiveCell.EntireRow.Select
Selection.Copy
Selection.Insert Shift:=xlDown

Alguma dica ou sugestão? Eu adoraria se apenas copiasse essa linha para a linha abaixo, até que ela atingisse uma linha vazia.

Eu li o tipo de comentário e fiquei sabendo que eu poderia recopiar os dados e classificar por um valor único para que tudo viesse como deveria - mas eu gostaria de saber o código VBA de qualquer maneira. / p>     

por Garrett C. 31.03.2016 / 19:11

2 respostas

1

Selecione a célula da qual você deseja iniciar a cópia e execute essa macro

Dim myCell
Set myCell = ActiveCell

While ActiveCell.Value <> ""
    Rows(ActiveCell.Row).Select
    Selection.Copy
    Selection.Insert Shift:=xlDown
    myCell.Offset(1, 0).Select
    Set myCell = ActiveCell
Wend
    
por 31.03.2016 / 22:41
1
Sub copyRowToBelow()
    Dim rng As Range
    Set rng = Range("A1") ' <~~  Change this

    Do While (rng.Value <> "")
        ' Insert a row below the current one
        rng.Offset(1).Insert

        ' Copy the current row and paste it into the row we just inserted
        rng.EntireRow.Copy rng.Offset(1)

        ' Set the range declaration for 2 rows below the current one
        Set rng = rng.Offset(2)
    Loop
End Sub

A linha marcada ("Change this") pode ser declarada no código, ou você pode trocá-la por Set rng = ActiveCell se quiser que ela seja executada na célula em que o usuário está trabalhando no momento da execução da macro .

Os comentários não são necessários para o código, eles estão lá apenas para ajudá-lo a aprender mais sobre o VBA.

    
por 04.04.2016 / 17:28