Macro copiar dados ...
 
Notifications
Clear all

Macro copiar dados da coluna ativa


scainet
Posts: 30
Registered
Topic starter
(@scainet)
Eminent Member
Entrou: 8 anos atrás

Bom dia.
Tenho uma planilha com um produto por coluna e cada produto tem uma composição diferente.
Preciso copiar a composição dele (ex. da linha 5 até a 50) na coluna onde ele está.
Hoje tenho uma macro para cada coluna. Mas queria uma macro dinâmica que servisse para todas colunas, pois a cada produto novo preciso adicionar uma macro nova hoje. Já estou com 94 macros abaixo, ou seja, na coluna CR kkkk.

Sub CopiarFicha01()
    Range("c6:c317").Select
    Selection.Copy
    Sheets("FORMULAÇÃO").Select
    Range("B6").Select
    ActiveSheet.Paste
    Range("C328:DD328").Select
    Selection.Copy
End Sub

Enquanto aguardo uma ajuda aqui, consegui improvisar algo.
Usei uma fórmula de endereço para exibir em determinada célula a letra da coluna.
E ai inseri na macro um variável, que seria a letra da coluna, para copiar no intervalo de linha.
O problema é que preciso primeiro clicar na célula onde está o endereço para dai clicar no botão da macro.

Fórmula: =EXT.TEXTO(ENDEREÇO(1;CORRESP(C2;2:2;0);4;1;);1;1)

Sub CopiarComVariavel()
    Dim var
    var = ActiveCell.Value
    var = Range(var & "3").Value
    Range(var & "6", var & "324").Select
    Selection.Copy
    Sheets("FORMULAÇÃO").Select
    Range("B6").Select
    ActiveSheet.Paste
    Range("C335:DD335").Select
    Selection.Copy
End Sub
Responder
3 Respostas
3 Respostas
JSCOPA10
Moderator
(@jscopa10)
Entrou: 2 anos atrás

Reputable Member
Posts: 320

@scainet , estou acompanhando este tópico já que ele pode ser útil para mim no trabalho ...

Afinal tenho algumas situações no trabalho onde preciso copiar colunas não sequenciais para outra Aba para fazer uma análise mais precisa!! ...

Ou seja, copiar A2:A800; D2:D800; H2:H800 e colar na coluna A, B, C de outra Aba para analisar!!! ...

Hoje copio na mão, mas se tivesse uma macro para fazer isto (copiar linha 2 até linha 800 da coluna ativa/selecionada) seria interessante!!!

Responder
scainet
Registered
(@scainet)
Entrou: 8 anos atrás

Eminent Member
Posts: 30

@jscopa10 Bom dia. 
Eu já havia conseguido resolver a questão por conta e hoje vim aqui olhar justamente para saber se alguém precisava da resposta.
Resolvi através de um código que aciona uma macro quando ocorre duplo clique nas células da linha que informei como ativa. Quando há duplo clique numa célula dessa linha, ele identifica qual foi a célula e faz a leitura do que está escrito na célula (que no caso é a letrada coluna), usando isso como variável para copiar a coluna onde foi dado o duplo clique.
Segue em anexo o modelo caso te ajude.

Responder
Alan Ruiz
Registered
(@alan-ruiz)
Entrou: 6 anos atrás

Active Member
Posts: 8

@scainet 

Não Entendi, você quer copiar todas as colunas de uma vez, mas como sempre entra produto novo e o numero de colunas aumenta, você precisa aumentar o intervalo de colunas a copiar ?

Caso seja, eu fiz uma rotina abaixo e joguei o anexo do exemplo. em cada código tentei fazer um comentário.

Option Explicit 'Aqui eu faço com que seja obrigado a declaração de váriaveis
Sub CopiarColunas() ' Aqui eu abri o procedimento sub

'Aqui eu fiz a Declaração das Variáveis

Dim ContarLinhas As Integer 'contar linhas como numeros inteiros
Dim ContarColunas As Integer ' contar colunas como numeros inteiros
Dim Planilha As Worksheet ' Planilha é uma aba da pasta de trabalho

Set Planilha = ThisWorkbook.Worksheets(Planilha1.Name) ' aqui estou selecionando a planilha (Setando)

ContarLinhas = Planilha.Cells(Rows.Count, 1).End(xlUp).Row 'aqui estou contando as linhas da planilha

ContarColunas = Planilha.Cells(2, Planilha.Columns.Count).End(xlToLeft).Column 'aqui estou contando as colunas apartir da linha 2

'Seleciona a coluna e a linha que você quer que comece , no caso A2 (2,1) 'Cells(Linha,Coluna)

Range(Cells(2, 1), Cells(ContarLinhas, ContarColunas)).Select ' utilizei o objeto range para selecionar e copiar intervalo que contem dados

Selection.Copy 'copio

ActiveSheet.Paste 'colo novamente no mesmo local

End Sub

É só pegar esse exemplo e modelar ele a sua planilha, caso seja essa a sua dúvida. 

 

Responder