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!
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.
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
Em seguida temos a aba de SP.
E por fim temos a aba do RJ.
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.
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.
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.
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.
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.
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.
Podemos fazer o mesmo teste acrescentando mais um produto na aba SP agora.
E agora executando a macro temos o mesmo resultado, os dados são acrescentados na aba resumo sem substituir nenhum dado, apenas acrescentando!
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.
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.
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.
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.
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!
Para acessar outras publicações de VBA, clique aqui!
Sócio fundador e especialista em Python da Hashtag Treinamentos. Criador do Método Impressionador para ensinar pessoas comuns a crescerem na carreira e se destacarem na empresa usando o Python.