Notifications
Clear all

Macro simples de copiar

5 Posts
3 Usuários
0 Reactions
1,080 Visualizações
(@dimorais)
Posts: 431
Reputable Member
Topic starter
 

Boa tarde
Copiar o conteúdo da linha informado em D6 no intervalo F8:J27 e colar na linha informada em N6 dentro do intervalo P8:T27. :D

 
Postado : 27/11/2013 12:33 pm
Wagner Morel
(@wagner-morel-vidal-nobre)
Posts: 0
Illustrious Member
 

dimorais,

Boa Trade!

Para testar, basta digitar o número das linhas em D6 e N6. Assim que a linha em N6 for informada, os dados da linha indicada em D6 serão copiados para a linha de destino.

Veja se assim lhe atende.

Desenvolvo pequenas soluções em VBA Excel a valores que variam entre R$ 50,00 a R$ 200,00. Se te interessar, entre no meu instagran (vba_excel_desenvolvimento)

Atenciosamente
Wagner Morel

 
Postado : 27/11/2013 2:15 pm
(@dimorais)
Posts: 431
Reputable Member
Topic starter
 

Wagner, é isso mesmo mas tem um detalhe:quando deleto a(s) linha(s) copiada a macro trava e não copia mais. O que pode ser?

 
Postado : 27/11/2013 4:04 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

dimorais, isto acontece devido a instrução : Application.EnableEvents = False, ou seja se Deletar apenas o Valor de uma Celula não teremos erro, pois a condição passará de False para True no final, mas se Deletar um Conjunto de Celulas teremos um erro de Tempo em Execução devido a condição da instrução:
If Range("D6").Value <> "" And Target.Row = 6 And Target.Column = 14 And Target.Value <> "" Then

Então, para contornar, desde que estará digitando sempre nas Celulas "D6 e N6", é só acrescentar uma nova condição para captar se a digitação não está dentro destes parametros e sair da condição devolvendo a Variavel paraTrue. Acrescentei somente as instruções necessárias, não alterando na rotina original do colega Wagner.

Troque por esta e refaça os testes :

Private Sub Worksheet_Change(ByVal Target As Range)
    Application.EnableEvents = False
    Dim LinhaIN, LinhaFIM As Long
    
    If Not Intersect(Target, Range("D6,N6")) Is Nothing Then
    
        If Range("D6").Value <> "" And Target.Row = 6 And Target.Column = 14 And Target.Value <> "" Then
            LinhaIN = Range("D6").Value + 7
            LinhaFIM = Range("N6").Value + 7
            Range("P" & LinhaFIM).Value = Range("F" & LinhaIN).Value
            Range("Q" & LinhaFIM).Value = Range("G" & LinhaIN).Value
            Range("R" & LinhaFIM).Value = Range("H" & LinhaIN).Value
            Range("S" & LinhaFIM).Value = Range("I" & LinhaIN).Value
            Range("T" & LinhaFIM).Value = Range("J" & LinhaIN).Value
            
        End If
        
    End If
    
    Application.EnableEvents = True
    
End Sub

[]s

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 27/11/2013 4:46 pm
(@dimorais)
Posts: 431
Reputable Member
Topic starter
 

Opa, rapaz, era o que tava faltando. Rapidinho uma aula de VBA e uma correção. :lol: :lol:
Muitíssimo grato ao Wagner Morel e Mauro Coutinho

 
Postado : 27/11/2013 5:01 pm