Notifications
Clear all

COPIAR SOMENTE ALGUMAS CÉLULAS DA LINHA ACIMA

3 Posts
3 Usuários
0 Reactions
1,182 Visualizações
(@sandrolima)
Posts: 0
Estimable Member
Topic starter
 

Boa tarde, colegas.

Como posso adequar esse código para que ele copie somente algumas células da linha imediatamente acima na tabela?

With Tabela
                .ListRows.Add (Linha), alwaysinsert:=True
                .ListRows(1).Range.Copy
                .ListRows(2).Range.PasteSpecial xlPasteAllUsingSourceTheme, Operation:=xlNone _
                    , SkipBlanks:=False, Transpose:=False
              
End With

Tenho uma Tabela que possui aproximadamente 20 colunas e algumas delas com fórmulas.
Preciso copiar os valores da Linha 1 para a Linha 2 e isso o código acima atende certinho.
Mas agora tenho necessidade de copiar SOMENTE os valores das colunas (3 a 6), (9) e (11 a 12) para não perder as fórmulas das demais colunas.
Acho que funcionaria com a função "ARRAY", correto? Mas não sei montar o código com ela ainda.
Alguém poderia me ajudar?

 
Postado : 10/12/2021 6:43 pm
DJunqueira
(@dmorais)
Posts: 0
Active Member
 

Para rever seus conceitos baixe a planilha anexa.

 
Postado : 11/12/2021 2:29 am
EdsonBR
(@edsonbr)
Posts: 1057
Noble Member
 

Não sei se entendi corretamente, @SandroLima, mas o código abaixo insere uma nova linha em branco na tabela "minhaTabela" na linha  cuja posição é "Linha" e atribui o valor da linha que estava antes naquela mesma posição à essa nova linha, isso para as colunas não adjacentes 3 a 6, 9 e 11 a 12 relativas à tabela.

Sub CopiaValoresNãoContíguos()
  Dim rgFonte As Range, Tabela As ListObject, Linha As Long
  Set Tabela = [minhaTabela].ListObject
  Linha = 1
  Set rgFonte = Tabela.ListRows(Linha).Range.Range("C1:F1 ,I1, K1:L1")
  Tabela.ListRows.Add Linha, True
  With rgFonte
   .Offset(-1).Areas(1).Value = .Areas(1).Value
   .Offset(-1).Areas(2).Value = .Areas(2).Value
   .Offset(-1).Areas(3).Value = .Areas(3).Value
  End With
End Sub

 

 
Postado : 12/12/2021 9:07 pm