Blog

Postado em em 21 de fevereiro de 2019

Copy e PasteSpecial no VBA – Como Copiar e Colar no VBA?

Quer aprender a utilizar o Copy e PasteSpecial no VBA? O famoso copiar e colar especial dentro do Excel só que de forma automática com o VBA?

Caso prefira o conteúdo de Copy e PasteSpecial no VBA em formato de vídeo-aula basta assistir abaixo, ou acesse o nosso Canal do YouTube para mais vídeos!

O que é o VBA?

VBA é a sigla para Visual Basic for Applications que nada mais é do que uma linguagem de programação. Essa linguagem nos permite programar certas ferramentas, funções, ações, tarefas… Pode também auxiliar a automatizar processos como o que veremos a seguir!

Essa programação é uma série de escritas chamadas de código que indicam para o programa o que desejamos fazer, ou seja, teremos algumas funções próprias do programa para auxiliar na programação e assim atingir nosso objetivo.

Quando utilizar o VBA?

O VBA tem diversas aplicações, mas para o nosso caso iremos utilizar o VBA para facilitar um processo de Copiar e Colar, ou seja, deixaremos esse processo automático utilizando apenas um botão ao invés de termos que selecionar as células, ir em outra aba e colar. Vamos fazer todas essas ações utilizando o VBA.

Para nosso exemplo temos três planilhas: Resumo, SP e RJ. A planilha de Resumo contém todas as vendas das outras duas planilhas. E nosso objetivo é sempre que colocarmos alguma venda em uma das duas abas SP ou RJ clicar em um botão e automaticamente copiar e colar o que foi escrito para a aba resumo.

Abaixo temos a aba Resumo com todas as vendas de SP e RJ

vba1 1

Em seguida temos a aba de SP.

vba2 1

E por fim temos a aba do RJ.

vba3

Como utilizar o VBA?

Para utilizarmos o VBA primeiramente precisamos abrir o ambiente VBA, temos duas formas de fazer isso: a primeira é indo até a guia desenvolvedor e clicando na opção Visual Basic e a outra forma é utilizando o atalho ALT + F11 (ALT + Fn + F11 caso a primeira opção não funcione). Feito isso irá abrir uma janela do ambiente VBA.

vba4

Para podermos escrever o nosso código é necessário criar um novo módulo, para isso basta ir na guia inserir e depois em módulo.

vba5

Copy e PasteSpecial no VBA

O código que vamos utilizar para copiar e colar no VBA (Copy e PasteSpecial no VBA) é o que está abaixo. Logo abaixo vamos ter a explicação desse código para que você entenda o que cada parte dele vai fazer incluindo o copy e pastespecial no VBA que é para colar especial.

Sub colar_resumo()

linha = Range("A1").End(xlDown).Row
Range("A" & linha & ":D" & linha).Copy
Sheets("Resumo").Select
linha_resumo = Range("A1").End(xlDown).Row + 1
Range("A" & linha_resumo).PasteSpecial
Range("A1").Select

End Sub

Neste código temos 8 linhas, e abaixo vamos explicar o que cada uma delas faz dentro do Excel para que possamos cumprir nosso objetivo de copiar e colar nossos dados.

Linha 1 – Temos o nome da nossa macro, ou seja, colar_resumo.

Linha 2 – Temos uma variável chamada linha. Uma variável nada mais é um espaço na memória que recebe e armazena algum valor. No exemplo, a variável linha vai receber o número da linha da última célula preenchida da coluna A.

A estrutura Range é utilizada para se referir a uma célula ou a um intervalo específico. No caso, foi utilizado o Range(“A1”) para se referir à célula A1 dentro do Excel. Já o End(xlDown) é utilizado para ir até a última célula preenchida de uma sequência. Como a célula de início foi a célula A1, o Excel irá até a última célula preenchida da coluna A, partindo da célula A1.

A última informação do código é o .Row, que simplesmente retorna a linha da célula selecionada. Isto é, na aba RJ, a última célula preenchida na coluna A é a célula A8, logo o .Row dessa célula retornaria o valor 8.

Resumidamente, essa linha de código faz com que a variável linha receba o número da linha da última célula preenchida na coluna A da aba selecionada.

Linha 3 – Após ter descoberto a linha da última célula preenchida da coluna A é feita uma seleção, utilizando a estrutura Range, que vai da célula “A linha” até a célula “D linha”. Ou seja, se a última compra foi anotada na linha 8, a variável linha receberá o valor 8, portanto a seleção será o intervalo A8:D8. Tendo selecionado o intervalo, o .Copy é utilizado para copiar o que estiver selecionado.

Linha 4 – Nesta linha é utilizada a estrutura Sheets para se referir a uma aba específica. No caso, foi feita uma referência à aba Resumo, pois é nela que vamos colar nossas informações. Para selecionar a aba referenciada basta usar o .Select ou .Activate.

Linha 5 – Agora temos outra variável chamada linha_resumo que vai fazer algo semelhante ao que foi feito para a variável linha. A única diferença é que será somado 1 ao valor da linha encontrado para que tenhamos o número da primeira célula vazia da tabela da aba Resumo.

Linha 6 – Iremos selecionar a célula “A linha_resumo” com a estrutura Range, ou seja, para o exemplo acima selecionaríamos a célula A16 da aba Resumo. Depois disso, com o .PasteSpecial as informações serão coladas na célula selecionada.

Linha 7 – Selecionamos a célula A1.

Linha 8 – Término da macro.

Resumindo

Nossa macro irá pegar a última linha que escrevemos na aba SP ou RJ. Vai copiar esses dados e colar após o último dado escrito na aba Resumo. Vamos iniciar colocando um novo produto na aba RJ.

vba7

Acrescentamos na linha 9 o produto Calcinha na nossa tabela, agora iremos rodar a macro, no primeiro momento vamos rodar manualmente depois atribuiremos um botão. Para fazer isso basta ir na guia desenvolvedor e em seguida selecione a opção macros. Feito isso será aberta uma janela com as macros gravadas, basta selecionar a macro e clicar em executar.

vba8

Pode-se observar que ao executar a macro o Excel muda a aba para Resumos, cola o nosso produto que foi adicionado e seleciona a célula A1 para deixar como padrão.

Então ao executar a macro vamos utilizar o Copy e PasteSpecial no VBA que vai fazer o serviço de copiar e colar especial no Excel de forma automática sem que você tenha que fazer isso manualmente.

vba9

Podemos fazer o mesmo teste acrescentando mais um produto na aba SP agora.

vba10

E agora executando a macro temos o mesmo resultado, os dados são acrescentados na aba resumo sem substituir nenhum dado, apenas acrescentando!

vba11

Para finalizar podemos criar um “botão” para não ter que toda vez ir até a guia desenvolvedor e selecionar a macro para utilizá-la. O “botão” nada mais é do que uma forma ou imagem. Neste caso iremos inserir uma forma retangular no Excel. Para isso, basta ir na guia Inserir, clicar em Ilustrações e depois em Formas.

vba12

Agora basta clicar e arrastar para fazer o retângulo. Em seguida basta escrever o que deseja no botão para indicar o que ele faz e formatar da forma que desejar. Para finalizar iremos clicar com o botão direito nesta forma e selecionar a opção atribuir macro.

vba13

Uma nova janela será aberta, a janela de macros, basta selecionar a macro desejada e pressionar ok. Feito isso seu “botão” estará criado, agora toda vez que clicar neste retângulo a macro será executada.

vba14

Para finalizar é necessário copiar esse botão para a outra aba, e toda vez que acrescentar um novo produto basta clicar no botão que ele irá automaticamente acrescentar na aba de resumo. Para copiar esse botão basta clicar com o botão direito no botão, clicar em Copiar, ir até a aba em que se deseja colar e utilizar o atalho CTRL+V.

Conclusão

Nessa aula eu te mostrei como você pode usar o copy e pastespecial no VBA para que você possa copiar e colar especial no VBA de uma forma automática para utilizar sempre que quiser.

Essa é apenas uma das aplicações do VBA. Você tem milhares de aplicações com o VBA para automatizar suas atividades dentro do Excel e deixar tudo mais fácil na hora de reproduzir, principalmente quando tiver atividades repetitivas!

Hashtag Treinamentos

Para acessar outras publicações de VBA, clique aqui!


Quer aprender mais sobre VBA com um minicurso básico gratuito?