VBA Colar Valor & Colar Especial
In this Article
Este tutorial lhe mostrará como usar o Colar Especial em VBA para colar apenas certas propriedades das células (ex. valores, formatos)
No Excel, quando você copia e cola uma célula você copia e cola todas as propriedades da célula: valores, formatos, fórmulas, formatação de números, bordas, etc:
Ao invés disso, você pode “Colar Especial” para colar apenas certas propriedades das céluas. No Excel, o menu Colar Especial pode ser acessado com o atalho CTRL + ALT + V (depois de copiar uma célula):
Aqui você pode ver todas as combinações de propriedades das células que você pode colar.
Se você gravar uma macro enquanto usa o Menu Especial Colar, você pode simplesmente usar o código gerado. Esta é frequentemente a maneira mais fácil de usar o VBA para Colar Especial.
Colar Valores
Colar Valores apenas cola o “valor” da célula. Se a célula continha uma fórmula, Colar Valores cola o resultado da fórmula.
Este código irá copiar e colar valores para uma única célula na mesma guia de trabalho:
Range("A1").Copy
Range("B1").PasteSpecial Paste:=xlPasteValues
Copiar e Colar Valores para Guias Diferentes
Este exemplo irá copiar e colar valores para células individuais em guia de trabalho diferentes
Sheets("Planilha1").Range("A1").Copy
Sheets("Planilha2").Range("B1").PasteSpecial Paste:=xlPasteValues
Estes exemplos irão copiar e colar valores para um intervalo de células:
Copiar e Colar Valores de Intervalo de Células
Range("A1:B3").Copy
Range("C1").PasteSpecial Paste:=xlPasteValues
Copiar e Colar Valores de Colunas
Columns("A").Copy
Columns("B").PasteSpecial Paste:=xlPasteValues
Copiar e Colar Valores de Linhas
Rows(1).Copy
Rows(2).PasteSpecial Paste:=xlPasteValues
Colar Valores e Formatos de Números
O comando Colar Valores só cola o valor da célula. Nenhuma formatação é colada, incluindo a formatação numérica.
Muitas vezes, quando você cola valores, você provavelmente desejará incluir também a formatação do número, para que seus valores permaneçam formatados. Vejamos um exemplo.
Aqui vamos Colar Valores de uma célula contendo uma porcentagem:
Sheets("Planilha1").Columns("D").Copy
Sheets("Planilha2").Columns("B").PasteSpecial Paste:=xlPasteValues
Observe como a formatação do número percentual é perdida e, em vez disso, é mostrado um valor decimal sem formatação.
Em vez disso, vamos usar Colar Valores e Formatos de Número:
Sheets("Planilha1").Columns("D").Copy
Sheets("Planilha2").Columns("B").PasteSpecial Paste:=xlPasteValuesAndNumberFormats
Agora você pode ver que a formatação do número também é colada, mantendo o formato percentual.
.Value em vez de .Paste
Em vez de Colar Valores, você poderia usar a propriedade Value do objeto Range:
Isto definirá o valor da célula A2 igual ao valor da célula B2
Range("A2").Value = Range("B2").Value
Você também pode definir um intervalo de células igual ao valor de uma única célula:
Range("A2:C5").Value = Range("A1").Value
ou um intervalo de células igual a outro intervalo de células de tamanho idêntico:
Range("B2:D4").Value = Range("A1:C3").Value
É menos digitação usar a propriedade Value. Além disso, se você quiser se tornar proficiente com Excel VBA, você deve estar familiarizado em trabalhar com a propriedade Value das células.
Propriedade da Célula Value vs. Value2
Tecnicamente, é melhor usar a propriedade Value2 de uma célula. O Value2 é ligeiramente mais rápido (isso só importa com cálculos extremamente grandes) e a propriedade Value pode dar um resultado da célula truncado se formatada como moeda ou como data. Entretanto, 99%+ do código que eu já vi usa .Value e não .Value2. Eu pessoalmente não uso .Value2, mas você deve estar ciente de que ele existe.
Range("A2").Value2 = Range("B2").Value2
Copy Paste Builder
Criamos um “Copy Paste Code Builder” que facilita a geração de código VBA para copiar (ou cortar) e colar células. O construtor é parte de nosso add-in VBA: AutoMacro.
AutoMacro também contém muitos outros geradores de códigos, uma extensa biblioteca de códigos e poderosas ferramentas de codificação.
Colar Especial – Formatos e Fórmulas
Além do Colar Valores, as opções mais comuns de Colar Especial são Colar Formatos e Colar Fórmulas.
Colar Formatos
Colar Formatos permite colar toda a formatação de células.
Range("A1:A10").Copy
Range("B1:B10").PasteSpecial Paste:=xlPasteFormats
Colar Fórmulas
Colar Fórmulas irá colar apenas as fórmulas das células. Isto também é extremamente útil se você quiser copiar as fórmulas das células, mas não quer copiar as cores de fundo das células (ou outra formatação da célula).
Range("A1:A10").Copy
Range("B1:B10").PasteSpecial Paste:=xlPasteFormulas
Colar Fórmulas e Formatos de Número
Similar ao Colar Valores e Formatos de Número acima, você também pode copiar e colar formatos de número junto com as fórmulas
Aqui copiaremos uma fórmula da célula com formato de números contábeis apenas com o Colar Fórmulas.
Sheets("Planilha1").Range("D3").Copy
Sheets("Planilha2").Range("D3").PasteSpecial xlPasteFormulas
Observe como a formatação do número é perdida e, em vez disso, é mostrado um valor sem formatação e não arredondado.
Em vez disso, vamos usar o Colar Fórmulas e Formatos de Números
Sheets("Planilha1").Range("D3").Copy
Sheets("Planilha2").Range("D3").PasteSpecial xlPasteFormulasAndNumberFormats
Agora você pode ver que a formatação dos números também é colada, mantendo o formato contábil.
Colar Especial – Transpor e Pular Espaços em Branco
Colar Especial – Transpor
Colar Especial Transpor permite copiar e colar células mudando a orientação de cima para baixo para esquerda-direita (ou vice-versa):
Sheets("Planilha1").Range("A1:A5").Copy
Sheets("Planilha1").Range("B1").PasteSpecial Transpose:=True
Colar Especial – Pular Espaços em Branco
Pular espaços em branco é uma opção do Colar Especial que não parece ser usada com a frequência que deveria ser. Ela permite copiar apenas células não em branco ao copiar e colar. Portanto, as células em branco não são copiadas.
Neste exemplo, abaixo, copiaremos a coluna A, faremos um colar normal na coluna B e pularemos os espaços em branco na coluna C. Você pode ver que as células em branco não foram coladas na coluna C na imagem abaixo.
Sheets("Planilha1").Range("A1:A5").Copy
Sheets("Planilha1").Range("B1").PasteSpecial SkipBlanks:=False
Sheets("Planilha1").Range("C1").PasteSpecial SkipBlanks:=True
Outras Opções de Colar Especial
Colar Especial – Comentários
Sheets("Planilha1").Range("A1").Copy Sheets("Planilha1").Range("E1").PasteSpecial xlPasteComments
Colar Especial – Validação
Sheets("Planilha1").Range("A1:A4").Copy
Sheets("Planilha1").Range("B1:B4").PasteSpecial xlPasteValidation
Colar Especial – Todos Usando o Tema de Origem
Workbooks(1).Sheets("Planilha1").Range("A1:A2").Copy
Workbooks(2).Sheets("Planilha1").Range("A1").PasteSpecial
Workbooks(2).Sheets("Planilha1").Range("B1").PasteSpecial xlPasteAllUsingSourceTheme
Colar Especial – Tudo Exceto Bordas
Range("B2:C3").Copy
Range("E2").PasteSpecial
Range("H2").PasteSpecial xlPasteAllExceptBorders
Colar Especial – Largura de Coluna
Um dos meus favoritos. Colar Especial Largura da Coluna copiará e colará a largura das colunas.
Range("A1:A2").Copy
Range("C1").PasteSpecial
Range("E1").PasteSpecial xlPasteColumnWidths
Colar Especial – Todos os Formatos Condicionais de Mesclagem
Range("A1:A4").Copy
Range("C1").PasteSpecial
Range("E1").PasteSpecial xlPasteAllMergingConditionalFormats