Prá inicio de conversa, sou totalmente leigo em VBA,O meu problema é o seguinte:
Tenho uma planilha de custos, onde tenho uma aba, Calculo do Produto, e outra Histórico de Vendas. Hoje preencho manualmente, copiando celulas da aba Calculo do Produto, e colando na aba Historico de vendas. São muitas celulas e isso se torna chato e cansativo.
O que eu preciso é copias celulas especificas em Calculo do Produto, e colar em celulas especificas de Histórico de Vendas.
Achei essa macro aqui no forum enviada por jeffsilveira e o que consegui entender está escrito ao lado
Sub copiar() Executar a macro de nome copiar
Range("A1:A10").Select Seleciona o intervalo de celuas de A1 até A10 na planilha de origem
Selection.Copy seleciona a funcao copiar
Sheets("Plan2").Select Seleciona a aba de destino
Range("A1").Select Seleciona a celula A1 na aba de destino
Do | Essa parte se refere à procura da primeira linha vazia.
If ActiveCell <> "" Then | Aqui tenho uma dúvida! Como a primeira celula de destino é A1, não sei se a procura é
ActiveCell.Offset(1, 0).Select | pela primeira celula A vazia, ou se toda a linha vazia.
End If | Exemplo: Se tiver um dado na celula A10 , vai colar a partir da celula A11. Mas se A10 estiver vazia e
Loop Until ActiveCell = "" | e houver dados na celula B10 ou C10, não se se cola na A11 ou cola na A10
ActiveCell.PasteSpecial Paste:=xlPasteAll, Essas duas linhas abaixo só sei que é a colagem, mas onde, quando, porque, não faço a
Operation:=xlNone, SkipBlanks:= _ False, Transpose:=False Application.CutCopyMode = False minima ideia
End Sub Termina a execução da macro
Apos várias tentativas e erros, (demorou varios dias) consegui adaptar da seguinte maneira.
Sub copiar()
Sheets("CALCULAR PRODUTO").Select
Range("B6, B11, B7").Select
Selection.Copy
Sheets("HISTÓRICO VENDAS").Select
Range("A1").Select
Do
If ActiveCell <> "" Then
ActiveCell.Offset(1, 0).Select
End If
Loop Until ActiveCell = ""
ActiveCell.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=TRUE
Application.CutCopyMode = False
End Sub
Alterei o nome das abas, as celulas a serem copiadas e alterei o TRANSPOSE=TRUE
Esta macro procura a primeira linha em branco e cola as células selecionadas na primeira celula vazia. Até então está OK.
Agora vamos aos problemas:
1 - A ordem das celulas a serem copiadas é B6, B11, B7, mas me retorna B6, B7, B11. A ordem a ser colada deve ser mantida.
2 - A selecao das celulas a serem copiadas não estão necessariamente, na mesma linha ou coluna, por exemplo, B11, H10, I6 Então se colocar TRANSPOSE, acho que vai dar errado.
3 - A colagem se dá a partir da celula A1 e cola nas colunas seguintes B1, C1, ou seja, colunas contiguas. Essa ordem precisa ser modificada, por exemplo, para A1, H1, C1
Então resumindo, o que eu preciso é pegar celulas especificas na origem, e colar em celulas especificas no destino. Aqui no forum e em outros que pesquisei, só achei exemplos como esse que peguei, referenciando a intervalos de celulas.
Se não for pedir muito, gostaria que explicassem a função de cada linha da macro, especialmente onde está apontando as celulas de origem e destino, pois tenho uma outra planilha e gostaria de fazer a mesma coisa e não queria ter que abrir um outro tópico com o mesmo assunto.
Muito grato