Isso é feito apenas um pouco mais complicado porque você deseja copiar mais de duas células. Normalmente, você pode usar o evento Worksheet_Change
para capturar sempre que uma célula é alterada. No entanto, você deseja aguardar até que as duas células tenham sido alteradas. Em vez de impor alguma regra na qual você tenha que alterá-las na ordem correta e apenas observar a última célula, eu escrevi isso para esperar que a célula C1
fosse alterada. Meu pensamento foi que seus usuários podem editar A1
& B1
, em seguida, digite qualquer coisa em C1
e o código será acionado. Você pode usar a Validação de dados para adicionar uma lista suspensa a C1
que tenha apenas uma opção como "Ir". O código abaixo copia os valores de A1
& B1
para a última linha na planilha 2 sempre que o valor de C1
for alterado e, em seguida, limpar esse valor de C1
.
Abra o editor de VBA ( Alt + F11 é um método). Procure a planilha 1 na janela Explorador de Projetos à esquerda (ela já deve estar lá com um menu em árvore mostrando todas as pastas de trabalho abertas e as planilhas dentro delas). Clique duas vezes na folha para abrir sua janela de código. Copie e cole o código abaixo: (Você pode ter que editar a linha Worksheets("Sheet2")
se "Folha2" não for o nome real da sua segunda planilha na qual você deseja que os dados sejam copiados.)
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Dim r As Long
If Not Intersect(Target, Range("C1")) Is Nothing Then
With Worksheets("Sheet2")
r = .Range("A" & .Rows.Count).End(xlUp).Row + 1
.Range("A" & r).Value = Range("A1").Value
.Range("B" & r).Value = Range("B1").Value
End With
Application.EnableEvents = False
Range("C1").ClearContents
Application.EnableEvents = True
End If
End Sub
(Para os viciados em VBA: tipicamente prefiro usar Cells
over Range
, mas não é tão instantaneamente compreensível, então eu usei Range
.)