Copie um intervalo com mais áreas para uma planilha especificada usando VBA no Microsoft Excel

Anonim

Neste artigo, criaremos uma macro para a união de várias áreas em uma folha especificada.

Os dados brutos consistem em alguns dados de amostra, que incluem Nome e Idade. Temos duas áreas que contêm dados brutos. Queremos a união de ambas as áreas na planilha “Destino”.

Clicar no botão “Copiar Registro” fará a união dos dados de ambas as áreas, junto com a formatação.

Clicar no botão “Copiar somente valor” também fará a união dos dados das duas áreas, mas sem copiar o formato da célula.

Explicação do código

Para cada pequeno tamanho nas planilhas ("Principal"). Faixa ("A9: B13, D16: E20"). Áreas

Next Smallrng

O For Each acima é usado para fazer um loop em áreas definidas.

Defina DestRange = Sheets ("Destination"). Range ("A" & LastRow)

O código acima é usado para criar um objeto de intervalo da última célula, onde queremos copiar os dados.

Smallrng.Copy DestRange

O código acima é usado para copiar dados para o destino especificado.

Siga abaixo para o código

 Option Explicit Sub CopyMultiArea () 'Declarando variáveis ​​Dim DestRange As Range Dim Smallrng As Range Dim LastRow As Long' Loop através de áreas especificadas para cada Smallrng nas folhas ("Principal"). Range ("A9: B13, D16: E20"). Areas 'Encontrando o número da linha da última célula LastRow = Sheets ("Destination"). Range ("A1"). SpecialCells (xlLastCell) .Row + 1' Selecionando a célula onde os registros precisam ser copiados If LastRow = 2 Then Set DestRange = Sheets ("Destination"). Range ("A" & LastRow - 1) Else Set DestRange = Sheets ("Destination"). Range ("A" & LastRow) End If 'Copiando registros para o intervalo de destino especificado Smallrng.Copy DestRange Next Smallrng End Sub Sub CopyMultiAreaValues ​​() 'Declarando variáveis ​​Dim DestRange As Range Dim Smallrng As Range Dim LastRow As Long' Loop através de áreas especificadas para cada Smallrng nas planilhas ("Principal"). Range ("A9: B13, D16: E20" ) .Areas 'Encontrando o número da linha da última célula LastRow = Sheets ("Destination"). Range ("A1"). SpecialCells (xlLastCell) .Row + 1 With Smallrng' Selecionando a célula onde está os cabos precisam ser copiados If LastRow = 2 Then Set DestRange = Sheets ("Destination"). Range ("A" & LastRow - 1) .Resize (.Rows.Count, .Columns.Count) Else Set DestRange = Sheets (" Destino "). Range (" A "& LastRow) .Resize (.Rows.Count, .Columns.Count) End If End With 'Atribuindo os valores da origem ao destino DestRange.Value = Smallrng.Value Next Smallrng End Sub 

Se você gostou deste blog, compartilhe com seus amigos no Facebook. Além disso, você pode nos seguir no Twitter e no Facebook.

Gostaríamos muito de ouvir de você, diga-nos como podemos melhorar nosso trabalho e torná-lo melhor para você. Escreva para nós no site de e-mail