Este tutorial mostrará como usar PasteSpecial no VBA para colar apenas certas propriedades da célula (exs. Valores, formatos)
No Excel, ao copiar e colar uma célula, você copia e cola todas as propriedades da célula: valores, formatos, fórmulas, formatação de números, bordas, etc:
Em vez disso, você pode “Colar especial” para colar apenas certas propriedades da célula. No Excel, o menu Colar especial pode ser acessado com o atalho CTRL + ALT + V (após copiar uma célula):
Aqui você pode ver todas as combinações de propriedades de células que você pode colar.
Se você gravar uma macro enquanto usa o Menu Colar Especial, você pode simplesmente usar o código gerado. Geralmente, essa é a maneira mais fácil de usar o VBA para colar especial.
Colar Valores
Colar valores cola apenas o “valor” da célula. Se a célula contiver uma fórmula, Colar Valores irá colar o resultado da fórmula.
Este código irá copiar e colar valores para uma única célula na mesma planilha:
12 | Intervalo ("A1"). CopiarIntervalo ("B1"). PasteSpecial Paste: = xlPasteValues |
Copiar e colar valor para uma folha diferente
Este exemplo irá copiar e colar valores para células únicas em planilhas diferentes
12 | Folhas ("Folha1"). Intervalo ("A1"). CopiarPlanilhas ("Planilha2"). Intervalo ("B1"). PasteSpecial Paste: = xlPasteValues |
Estes exemplos copiarão e colarão valores para intervalos de células:
Intervalos de copiar e colar de valores
12 | Intervalo ("A1: B3"). CopiarIntervalo ("C1"). PasteSpecial Paste: = xlPasteValues |
Copiar e Colar Colunas de Valor
12 | Colunas ("A"). CopiarColunas ("B"). PasteSpecial Paste: = xlPasteValues |
Copiar e valorizar linhas de colagem
12 | Linhas (1) .CopiarLinhas (2) .PasteSpecial Paste: = xlPasteValues |
Colar valores e formatos numéricos
Colar valores irá colar apenas o valor da célula. Nenhuma formatação é colada, incluindo a formatação de números.
Freqüentemente, ao colar valores, você provavelmente desejará incluir a formatação de número também para que seus valores permaneçam formatados. Vejamos um exemplo.
Aqui iremos valorar a colagem de uma célula contendo uma porcentagem:
12 | Folhas ("Folha1"). Colunas ("D"). CopiarFolhas ("Folha2"). Colunas ("B"). PasteSpecial Paste: = xlPasteValues |
Observe como a formatação do número percentual é perdida e, em vez disso, um valor decimal desleixado é mostrado.
Em vez disso, vamos usar os formatos Colar Valores e Números:
12 | Folhas ("Folha1"). Colunas ("D"). CopiarFolhas ("Folha2"). Colunas ("B"). PasteSpecial Paste: = xlPasteValuesAndNumberFormats |
Agora você pode ver que a formatação do número também foi colada, mantendo o formato de porcentagem.
.Value em vez de .Paste
Em vez de colar valores, você pode usar a propriedade Value do objeto Range:
Isso definirá o valor da célula de A2 igual ao valor da célula de B2
1 | Intervalo ("A2"). Valor = Intervalo ("B2"). Valor |
Você também pode definir um intervalo de células igual ao valor de uma única célula:
1 | Intervalo ("A2: C5"). Valor = Intervalo ("A1"). Valor |
ou um intervalo de células igual a outro intervalo de células de tamanho idêntico:
1 | Intervalo ("B2: D4"). Valor = Intervalo ("A1: C3"). Valor |
É menos digitar para usar a propriedade Value. Além disso, se você deseja se tornar proficiente no Excel VBA, deve estar familiarizado com o trabalho com a propriedade Value das células.
Valor da célula vs. propriedade Value2
Tecnicamente, é melhor usar a propriedade Value2 de uma célula. Value2 é um pouco mais rápido (isso só importa com cálculos extremamente grandes) e a propriedade Value pode fornecer um resultado truncado de que a célula está formatada como moeda ou data. No entanto, mais de 99% do código que eu vi usa .Value e não .Value2. Eu pessoalmente não uso .Value2, mas você deve estar ciente de que existe.
1 | Intervalo ("A2"). Valor2 = Intervalo ("B2"). Valor2 |
Copiar Construtor de Pastas
Criamos um “Copiar e colar o construtor de código” que facilita a geração de código VBA para copiar (ou recortar) e colar células. O construtor faz parte do nosso Suplemento VBA: AutoMacro.
AutoMacro também contém muitos outros Geradores de código, um extenso Biblioteca de Código, e poderoso Ferramentas de codificação.
Colar especial - formatos e fórmulas
Além de 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.
12 | Intervalo ("A1: A10"). CopiarIntervalo ("B1: B10"). PasteSpecial Paste: = xlPasteFormats |
Colar Fórmulas
Colar fórmulas irá colar apenas as fórmulas de células. Isso também é extremamente útil se você deseja copiar fórmulas de células, mas não deseja copiar as cores de fundo da célula (ou outra formatação de célula).
12 | Intervalo ("A1: A10"). CopiarIntervalo ("B1: B10"). PasteSpecial Paste: = xlPasteFormulas |
Colar fórmulas e formatos numéricos
Semelhante a Colar Valores e Formatos Numéricos acima, você também pode copiar e colar formatos numéricos junto com as fórmulas
Aqui, copiaremos uma fórmula de célula apenas com Formatação de Número Contábil e Colar Fórmulas.
12 | Folhas ("Folha1"). Intervalo ("D3"). CopiarFolhas ("Folha2"). Intervalo ("D3"). PasteSpecial xlPasteFórmulas |
Observe como a formatação do número é perdida e, em vez disso, um valor desleixado não arredondado é mostrado.
Em vez disso, vamos usar os formatos Colar Fórmulas e Números:
12 | Folhas ("Folha1"). Intervalo ("D3"). CopiarFolhas ("Folha2"). Intervalo ("D3"). PasteSpecial xlPasteFormulasAndNumberFormats |
Agora você pode ver que a formatação do número também foi colada, mantendo o formato da Contabilidade.
Colar especial - transpor e ignorar espaços em branco
Colar especial - transpor
Colar transposição especial permite que você copie e cole células alterando a orientação de cima-baixo para esquerda-direita (ou vice-versa):
12 | Folhas ("Folha1"). Intervalo ("A1: A5"). CopiarFolhas ("Folha1"). Intervalo ("B1"). PasteSpecial Transposição: = Verdadeiro |
Colar especial - pular espaços em branco
Pular espaços em branco é uma opção especial para colar que não parece ser usada com a frequência que deveria. Ele permite que você copie apenas células que não estejam em branco ao copiar e colar. Portanto, as células em branco não são copiadas.
Neste exemplo abaixo. Vamos copiar a coluna A, colar regularmente na coluna B e pular a colagem dos 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.
123 | Folhas ("Folha1"). Intervalo ("A1: A5"). CopiarSheets ("Sheet1"). Range ("B1"). PasteSpecial SkipBlanks: = FalseSheets ("Sheet1"). Range ("C1"). PasteSpecial SkipBlanks: = True |
Outras opções especiais de colagem
Colar Especial - Comentários
1 | Folhas ("Folha1"). Intervalo ("A1"). Copiar folhas ("Folha1"). Intervalo ("E1"). PasteSpecial xlPasteComments |
Colar Especial - Validação
12 | Folhas ("Folha1"). Intervalo ("A1: A4"). CópiaFolhas ("Folha1"). Intervalo ("B1: B4"). PasteSpecial xlPasteValidation |
Colar especial - todos usando o tema fonte
123 | Workbooks (1) .Sheets ("Sheet1"). Range ("A1: A2"). CopyWorkbooks (2) .Sheets ("Sheet1"). Range ("A1"). PasteSpecialWorkbooks (2) .Sheets ("Sheet1"). Range ("B1"). PasteSpecial xlPasteAllUsingSourceTheme |
Colar especial - tudo exceto bordas
123 | Intervalo ("B2: C3"). CopiarIntervalo ("E2"). ColarEspecialIntervalo ("H2"). PasteSpecial xlPasteAllExceptBorders |
PasteSpecial - larguras da coluna
Um favorito pessoal meu. PasteSpecial Column Widths irá copiar e colar a largura das colunas.
123 | Intervalo ("A1: A2"). CopiarIntervalo ("C1"). ColarEspecialIntervalo ("E1"). PasteSpecial xlPasteColumnWidths |
PasteSpecial - All MergingConditionalFormats
123 | Intervalo ("A1: A4"). CopiarIntervalo ("C1"). ColarEspecialIntervalo ("E1"). PasteSpecial xlPasteAllMergingConditionalFormats |